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 隻是一個潛在的客戶。她隻是表示在購買太空船的興趣。但是,這並冇有將她的名字加入到數據庫!
在任何情況下,查詢已完成其工作。我們不希望看到,冇有訂購任何東西的客戶的名單中。