Access創建查詢
查詢是指指示數據庫返回的一些數據(或全部)在數據庫的動作。 換句話說,在「查詢」數據庫中的一些數據匹配一個給定的標準。查詢是針對一個或多個表運行僅返回感興趣的數據。
例如,你可能會喜歡看所有個人的姓氏爲「Griffin」的名單。 或者你可能希望看到所有數據庫中在給定的時間內註冊用戶的列表。您可能還希望看到哪些客戶已訂購了特定產品。要做到這一切,你需要執行一個查詢。
示例數據
在我們開始之前查詢數據庫,我們也許應該確保首先得到了足夠的數據。 否則,不管你的查詢有多好 - 如果沒有數據,它們都將返回零的結果。因此,讓我們加入一些數據。
*記住,ID列和dateCreated會列自動生成, 所以只需要輸入數據到表中的另外兩列。*
Customers 表
你可以隨意補加你自己的數據。這裏是我的:
Products 表
你可以隨意補加你自己的數據。這裏是我的:
Orders 表
再次,隨意彌補自己的,但是你需要確保在客戶ID和產品ID字段中的值相匹配實際ID相應的表。例如,如果你的訂單表包含ID爲5的客戶,那需要確保在Customers表中的實際要有一個客戶的客戶ID爲5。下面是Orders表的一些樣本數據:
引用完整性
當你創建一個關係,你還必須實施參照完整性(這是我們選擇的時候,我們創建的關係)的選項。這可以防止其在引用表中沒有相應的主鍵值外鍵值。
使用我們的表作爲一個例子,假設你有10個記錄在Customers表(客戶ID爲從1-10),但你的訂單表包含使用客戶ID爲11的記錄。在這種情況下,參照完整性沒有被維持。如果你已經對關係實施參照完整性(因爲我們有),訪問將阻止這種情況的發生。
下面是如果你試圖輸入一個值,將違反參照完整性提示的一個截圖。在這種情況下,我試圖輸入客戶ID爲50和ProductId爲50,但客戶和產品表沒有客戶ID爲或產品編號爲50的記錄:
請注意,如果您已經啓用實施參照完整性只能得到這個消息。如果您還沒有實施參照完整性,Access會愉快地讓你輸入毫無意義的數據值,數據庫的引用完整性就會沒有起作用。
創建查詢
現在,讓我們創建一個返回已訂購了產品的所有客戶的名稱的查詢。
- 確保你已經創建選項卡上的功能區打開,單擊:Query Design
- 顯示錶對話框將會出現使用所有列出的表中。選擇所有三個表,然後單擊添加,然後單擊:Close:
- 三個表沒有在頂部窗格中所示(功能區下方)。選擇在您的查詢的結果將提交的字段。可以雙擊字段名稱或單擊並拖動它到一個列在底部窗格中。選擇字段,如下所示:
- 請單擊功能區的左上角部分的運行(run)按鈕:
- 你不應該看到這樣的查詢結果。因爲這裏是我的:
- 保存方法是右鍵單擊該查詢Query1選項卡上,並給它起名字爲:Customer Orders:
那麼我們的查詢實際上是怎麼做的?
我們查詢成功返回至少一個產品的所有客戶訂單,它包括產品,其價格在名字的旁邊。也可以看到,一些客戶已經訂購了多個產品。該查詢使用,我們創建並返回匹配的數據自動加入了三張表之間的關係。
這個查詢只能返回至少有一個產品的客戶訂單。如果客戶在客戶表中,但不訂購產品,客戶的記錄不會顯示在此查詢的結果。如果你回頭看看Customers表(接近這個頁面的頂部),你會看到,瑪吉·辛普森(Marge Simpson)是一個客戶但她沒有訂購的產品,但(即她沒有在訂單表的相應的記錄)。 好吧,事實上,Marge 只是一個潛在的客戶。她只是表示在購買太空船的興趣。但是,這並沒有將她的名字加入到數據庫!
在任何情況下,查詢已完成其工作。我們不希望看到,沒有訂購任何東西的客戶的名單中。