Access SQL:基本概念、詞彙和語法

重要:  本文係由機器翻譯而成,請參閱免責聲明。本文的英文版本請見這裡,以供參考。

當您想要從資料庫中擷取資料時,您要求的資料使用結構化查詢語言或 SQL。SQL 是電腦語言的非常類似英文,但瞭解資料庫程式。您執行的每個查詢在幕後使用 SQL。

SQL 的運作方式可協助您瞭解建立較佳的查詢,並可以方便您瞭解如何修正查詢無法傳回您想要的結果。

這是設定的一種 Access SQL 相關的文件。本文說明基本的 SQL 以選取資料,並使用範例說明 SQL 語法。

本文內容

什麼是 SQL?

基本的 SQL 子句︰ 選取、 FROM 和位置

排序結果︰ 依順序

使用 [合併彙算資料︰ 群組依據] 及 [HAVING

結合查詢結果︰ 聯集

什麼是 SQL?

SQL 是電腦語言使用的結合事實和之間的關係。關聯式資料庫的程式,例如 Microsoft Office Access,使用 SQL 來處理資料。不同於許多電腦語言,不難閱讀並瞭解,甚至是以 SQL。許多電腦語言,例如 SQL 是國際標準識別的ANSIISO等的標準內文。

您可以使用 SQL 描述可協助您回答問題的資料集。當您使用 SQL 時,您必須使用正確的語法。語法不正確結合所用的語言元素的規則集。SQL 語法根據英文語法,並使用許多相同的項目為 Visual Basic for Applications (VBA) 語法。

例如擷取姓氏的第一個名稱為 50%的連絡人清單的簡單 SQL 陳述式可能看起來像這樣︰

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

附註: SQL 不只會用來管理資料,但建立和修改的資料庫物件,例如 [資料表設計。用於建立及變更資料庫物件的 SQL 部分稱為資料定義語言 (DDL)。本文並未涵蓋 DDL。如需詳細資訊,請參閱文章建立或修改資料表或索引使用資料定義查詢

SELECT 陳述式

使用 SQL 描述一組資料,您撰寫的 SELECT 陳述式。SELECT 陳述式包含您想要從資料庫取得的資料集的完整描述。包括下列︰

  • 哪些資料表包含的資料。

  • 如何與相關來自不同來源的資料。

  • 哪些欄位或計算會產生的資料。

  • 資料必須符合所要包含的準則。

  • 是否,以及如何排序結果。

SQL 子句

一個句子,例如 SQL 陳述式具有子句。每個子句執行 SQL 陳述式的函數。某些子句所需的 SELECT 陳述式。下表列出最常見的 SQL 子句。

SQL 子句

功能

所需

SELECT

列出含有需要資料的欄位。

FROM

列出含有 SELECT 子句所列之欄位的資料表。

WHERE

指定結果中所包含的每一筆記錄必須符合的欄位準則。

ORDER BY

指定如何排序結果。

GROUP BY

在含有總合函數的 SQL 陳述式中,列出 SELECT 子句中未彙總的欄位。

只在當有這樣的欄位時

HAVING

在含有總合函數的 SQL 陳述式中,指定套用至 SELECT 陳述式中所彙總之欄位的條件。

SQL 詞彙

每個 SQL 子句組成字詞,相當於組件的語音。下表列出 SQL 字詞的類型。

SQL 詞彙

比較詞類

定義

範例

識別項

名詞

用來識別資料庫物件,例如 [名稱] 欄位的名稱。

客戶。[電話號碼]

運算子

動詞或副詞

代表某個動作或修飾某個動作的關鍵字。

AS

常數

名詞

一個不會變更的值,例如數字或 NULL。

42

運算式

形容詞

識別項、運算子、常數和函數的組合,會求出單一值。

>= 產品.[單價]

頁面頂端

基本的 SQL 子句︰ 選取、 FROM 和位置

SQL 陳述式的一般形式︰

SELECT field_1
FROM table_1
WHERE criterion_1
;

附註: 

  • Access 會忽略 SQL 陳述式的分行符號。不過,請考慮使用每個子句的列以協助改善您自己與其他人的 SQL 陳述式的可讀性。

  • 每一個 SELECT 陳述式結尾為以分號 (;)]。以分號可以顯示結尾處的最後一個子句或線條本身的 SQL 陳述式結尾。

在 Access 中的範例

下列說明簡單的選取查詢 SQL 陳述式外觀在 Access 中︰

顯示 SELECT 陳述式的 SQL 物件索引標籤

1.SELECT 子句

2.FROM 子句

3.WHERE 子句

此範例中的 SQL 陳述式讀取 」 選取 [從名稱為連絡人,特別是這些記錄的欄位縣/市的值是西雅圖資料表命名電子郵件地址和 [公司] 欄位中所儲存的資料 」。

讓我們來看看範例,一個子句,一次,若要查看的 SQL 語法的運作方式。

SELECT 子句

SELECT [E-mail Address], Company

這是 SELECT 子句。組成,運算子 (選取) 後面接著兩個識別項 ([電子郵件地址] 和 [公司)。

如果識別項包含空格或特殊字元 (例如 「 電子郵件地址 」),它必須以方括弧括住。

SELECT 子句沒有指出哪些資料表包含的欄位,而且不能指定要包含的資料,必須符合所有條件。

SELECT 子句會一直出現前面 FROM 子句的 SELECT 陳述式。

FROM 子句

FROM Contacts

這是 FROM 子句。接著識別項 (連絡人) 運算子 (從) 所組成。

FROM 子句中未列出要選取的欄位。

WHERE 子句

WHERE City="Seattle"

這是 WHERE 子句。組成,運算子 (處) 之後的運算式 (縣/市 ="西雅圖 」)。

附註: 與選取不同的是 FROM 子句,WHERE 子句即可不必要的項目的 SELECT 陳述式。

您可以完成的 SQL 可讓您使用進行的動作選取、 FROM 和 WHERE 子句。深入瞭解如何使用這些子句以呈現下列其他文章︰

頁面頂端

排序結果︰ 依順序

Microsoft Excel 中,存取可讓您排序資料工作表中的查詢結果。您也可以指定您要執行查詢時,使用 ORDER BY 子句排序結果的方式查詢中。如果您使用 ORDER BY 子句,則在 SQL 陳述式中的最後一個子句。

ORDER BY 子句會包含您想要用來排序,您想要套用的排序作業的相同順序之欄位的清單。

例如,假設您想要的第一次 [公司] 欄位的值遞減排序,結果和 — 是否有相同值的公司的記錄,接著在 [電子郵件地址] 欄位的值遞增順序排序。您 ORDER BY 子句會如下所示︰

ORDER BY Company DESC, [E-mail Address]

附註: 根據預設,Access 會以遞增順序 (A 至 Z,最小到最大) 的值排序。您可以使用 [遞減] 關鍵字來值,請改為遞減順序排序。

如需有關 ORDER BY 子句的詳細資訊,請參閱順序 BY 子句的主題。

頁面頂端

使用 [合併彙算資料︰ 群組依據] 及 [HAVING

有時候您要使用 [合併彙算資料,例如中一個月的總銷售或存貨中的最高的項目。若要這麼做,您套用彙總函數欄位在 SELECT 子句中。例如,如果您想要查詢以顯示每個公司所列的電子郵件地址的計數,SELECT 子句可能如下所示︰

SELECT COUNT([E-mail Address]), Company

您可以使用彙總函式的欄位或您想要使用的運算式中的資料類型而定。如需有關使用彙總函數的詳細資訊,請參閱SQL 彙總函數

指定未使用的欄位中的彙總函式︰ GROUP BY 子句

當您使用彙總函數時,您通常必須同時建立 GROUP BY 子句。GROUP BY 子句會列出您不適彙總函數的所有欄位。將彙總函式套用至查詢中的所有欄位時,如果您沒有建立 GROUP BY 子句。

GROUP BY 子句立即遵循 WHERE 子句或 FROM 子句,如果不有任何 WHERE 子句。GROUP BY 子句會列出的欄位,顯示在 SELECT 子句中。

如果 SELECT 子句適用於 [電子郵件地址] 的 [彙總函數,例如繼續先前的範例,但無法公司您 GROUP BY 子句會如下所示︰

GROUP BY Company

如需有關 GROUP BY 子句的詳細資訊,請參閱群組 BY 子句的主題。

使用群組準則限制彙總的值︰ HAVING 子句

如果您想要使用準則來限制您的結果,但您想要套用至彙總函數中使用準則的欄位,您無法使用 WHERE 子句。不過,您可以使用 HAVING 子句。HAVING 子句 WHERE 子句,例如運作,但會使用彙總的資料。

例如,假設您使用的 AVG 函數 (計算平均的值) 與 SELECT 子句的第一個欄位︰

SELECT COUNT([E-mail Address]), Company

如果您想要限制結果根據 COUNT 函數的值的查詢,您無法使用 WHERE 子句中該欄位的準則。不過,您可以將準則 HAVING 子句中。例如,如果您只想查詢傳回的資料列,如果有一個以上的公司相關聯的一個電子郵件地址,請 HAVING 子句可能如下所示︰

HAVING COUNT([E-mail Address])>1

附註: 查詢可以有 WHERE 子句,HAVING 子句--彙總函數中未使用的欄位的準則移 WHERE 子句,和 [彙總函數搭配使用的欄位的準則移 HAVING 子句中。

如需有關 HAVING 子句的詳細資訊,請參閱有子句的主題。

頁面頂端

結合查詢結果︰ 聯集

當您想要檢閱所有傳回的數個類似的選取查詢在一起,因為結合的資料時,您會使用 UNION 運算子。

聯集運算子可讓您合併成一個兩個 SELECT 陳述式。您合併的 SELECT 陳述式必須數相同的輸出欄位,以相同的順序,及與相同或相容的資料類型。當您執行查詢時,從每個對應的欄位的資料會合併成一個的輸出欄位,讓查詢輸出中有相同的數字,為每一個 select 陳述式] 欄位。

附註: 在進行聯集查詢時,數字和文字資料類型是相容的。

當您使用聯集運算子時,您也可以指定是否查詢結果應該包含重複的資料列,是否有的話,使用所有的關鍵字。

基本的結合兩個 SELECT 陳述式聯集查詢的 SQL 語法如下所示︰

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

例如,假設您有一個名為產品資料表及具名服務的另一個資料表。兩個資料表有欄位包含名稱的產品或服務價格、 擔保或保證的顯示狀態,以及是否提供產品或服務以獨佔模式。[產品] 資料表儲存擔保的詳細資訊,以及服務表格儲存保證資訊,雖然基本資訊是相同 (是否特定產品或服務包含品質的承諾)。您可以使用聯集查詢,如下所示,合併兩個資料表的四個欄位︰

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

如需有關如何使用 UNION 運算子結合 SELECT 陳述式的詳細資訊,請參閱合併數個選取查詢使用聯集查詢的結果

頁面頂端

附註: 機器翻譯免責聲明︰本文係以電腦系統翻譯而成,未經人為介入。Microsoft 提供此等機器翻譯旨在協助非英語系使用者輕鬆閱讀 Microsoft 產品、服務及技術相關內容。基於本文乃由機器翻譯而成,因此文中可能出現詞辭、語法、文法上之錯誤。

分享 Facebook Facebook Twitter Twitter 電子郵件 電子郵件

這項資訊有幫助嗎?

太好了! 還有其他意見反應嗎?

我們應該如何改進?

感謝您的意見反應!

×