位置:首頁 > 數據庫 > Access教學 > Access創建查詢

Access創建查詢

查詢是指指示數據庫返回的一些數據(或全部)在數據庫的動作。 換句話說,在“查詢”數據庫中的一些數據匹配一個給定的標準。查詢是針對一個或多個表運行僅返回感興趣的數據。

例如,你可能會喜歡看所有個人的姓氏為“Griffin”的名單。 或者你可能希望看到所有數據庫中在給定的時間內注冊用戶的列表。您可能還希望看到哪些客戶已訂購了特定產品。要做到這一切,你需要執行一個查詢。

示例數據

在我們開始之前查詢數據庫,我們也許應該確保首先得到了足夠的數據。 否則,不管你的查詢有多好 - 如果冇有數據,它們都將返回零的結果。因此,讓我們加入一些數據。

記住,ID列和dateCreated會列自動生成, 所以隻需要輸入數據到表中的另外兩列。

Customers 表

你可以隨意補加你自己的數據。這裡是我的:

Screenshot of sample data in the Products table

Products 表

你可以隨意補加你自己的數據。這裡是我的:

Screenshot of sample data in the Products table

Orders 表

再次,隨意彌補自己的,但是你需要確保在客戶ID和產品ID字段中的值相匹配實際ID相應的表。例如,如果你的訂單表包含ID為5的客戶,那需要確保在Customers表中的實際要有一個客戶的客戶ID為5。下麵是Orders表的一些樣本數據:
Screenshot of sample data in the Orders table

引用完整性

當你創建一個關係,你還必須實施參照完整性(這是我們選擇的時候,我們創建的關係)的選項。這可以防止其在引用表中冇有相應的主鍵值外鍵值。

使用我們的表作為一個例子,假設你有10個記錄在Customers表(客戶ID為從1-10),但你的訂單表包含使用客戶ID為11的記錄。在這種情況下,參照完整性冇有被維持。如果你已經對關係實施參照完整性(因為我們有),訪問將阻止這種情況的發生。

下麵是如果你試圖輸入一個值,將違反參照完整性提示的一個截圖。在這種情況下,我試圖輸入客戶ID為50和ProductId為50,但客戶和產品表冇有客戶ID為或產品編號為50的記錄:

Screenshot of referential integrity warning

請注意,如果您已經啟用實施參照完整性隻能得到這個消息。如果您還冇有實施參照完整性,Access會愉快地讓你輸入毫無意義的數據值,數據庫的引用完整性就會冇有起作用。

創建查詢

現在,讓我們創建一個返回已訂購了產品的所有客戶的名稱的查詢。

  1. 確保你已經創建選項卡上的功能區打開,單擊:Query Design
    MS Access 2013: Creating a query - step 1
  2. 顯示表對話框將會出現使用所有列出的表中。選擇所有三個表,然後單擊添加,然後單擊:Close:
    MS Access 2013: Creating a query - step 2
  3. 三個表冇有在頂部窗格中所示(功能區下方)。選擇在您的查詢的結果將提交的字段。可以雙擊字段名稱或單擊並拖動它到一個列在底部窗格中。選擇字段,如下所示:
    MS Access 2013: Creating a query - step 3
  4. 請單擊功能區的左上角部分的運行(run)按鈕:
    MS Access 2013: Creating a query - step 4
  5. 你不應該看到這樣的查詢結果。因為這裡是我的:
    Screenshot of the query result
  6. 保存方法是右鍵單擊該查詢Query1選項卡上,並給它起名字為:Customer Orders:
    Screenshot of saving the query

那麼我們的查詢實際上是怎麼做的?

我們查詢成功返回至少一個產品的所有客戶訂單,它包括產品,其價格在名字的旁邊。也可以看到,一些客戶已經訂購了多個產品。該查詢使用,我們創建並返回匹配的數據自動加入了三張表之間的關係。

這個查詢隻能返回至少有一個產品的客戶訂單。如果客戶在客戶表中,但不訂購產品,客戶的記錄不會顯示在此查詢的結果。如果你回頭看看Customers表(接近這個頁麵的頂部),你會看到,瑪吉·辛普森(Marge Simpson)是一個客戶但她冇有訂購的產品,但(即她冇有在訂單表的相應的記錄)。 好吧,事實上,Marge 隻是一個潛在的客戶。她隻是表示在購買太空船的興趣。但是,這並冇有將她的名字加入到數據庫!

在任何情況下,查詢已完成其工作。我們不希望看到,冇有訂購任何東西的客戶的名單中。