如果您的查詢不夠困難,新增一些基本的 SQL 語句有助於將結果集中。 讓我們來看看幾種類型的 SQL 語句,以及您可能會編輯的子句或部分,以取得您想要的結果。
附註: 本文內容不適用於 Access Web App (此為使用 Access 設計並於線上發佈的資料庫類型)。
本文內容
建立 Select 語句
SQL 選取語句有兩到三個子句。 SELECT 子句會告訴資料庫要在哪裡尋找數據,並要求它傳回特定的結果。
附註: SELECT 語句一律以分號 ( 結尾;) 在最後一個子句的結尾,或是本身在 SQL 語句結尾的行上。
下列選取語句會要求 Access 從 [連絡人] 資料表的 [電子郵件位址] 和 [公司] 資料行取得資訊,明確地在 [城市] 數據行中找到 「西雅圖」。
上述查詢有三個子句 SELECT、FROM 和 WHERE。
1. SELECT 子句會列出包含您要使用之數據的欄,並具有運算符 (SELECT) ,後面接著兩個標識符, (電子郵件位址和公司) 。 如果標識碼具有空格或特殊字元 (例如「電子郵件位址」) ,請在方括號內括住標識符。
2. FROM 子句會識別源數據表。 在此範例中,它具有 (FROM) 的運算符,後面接著 [連絡人]) (標識符。
3. WHERE 子句是選擇性子句。 範例中有一個運算符 (WHERE) ,後面接著表達式 (City=“Seattle”) 。
如需選取查詢的詳細資訊,請參閱 建立簡單的選取查詢。
以下是常見 SQL 子句的清單:
SQL 子句 |
功能 |
必要嗎 ? |
SELECT |
列出含有需要資料的欄位。 |
可 |
FROM |
列出含有 SELECT 子句所列之欄位的資料表。 |
可 |
WHERE |
指定結果中所包含的每一筆記錄必須符合的欄位準則。 |
否 |
ORDER BY |
指定如何排序結果。 |
否 |
GROUP BY |
在含有總合函數的 SQL 陳述式中,列出 SELECT 子句中未彙總的欄位。 |
只在當有這樣的欄位時 |
HAVING |
在含有總合函數的 SQL 陳述式中,指定套用到 SELECT 陳述式中所彙總之欄位的條件。 |
否 |
每個 SQL 子句都是由字詞組成。 以下是一些常見 SQL 詞彙的清單。
SQL 詞彙 |
定義 |
範例 |
識別項 |
用來識別資料庫物件的名稱,例如數據行名稱。 |
[電子郵件位址] 和公司 |
運算子 |
代表某個動作或修飾某個動作的關鍵字。 |
AS |
常數 |
一個不會變更的值,例如數字或 NULL。 |
42 |
運算式 |
識別項、運算子、常數和函數的組合,會求出單一值。 |
>= 產品.[單價] |
自定義 SELECT 子句
自訂 |
範例 |
僅查看相異值。 在 SELECT 子句中使用 DISTINCT 關鍵詞。 |
例如,如果您的客戶來自數個不同的分公司,有些分公司的電話號碼相同,而您只想要看到電話號碼列出一次,您的 SELECT 子句會像這樣:
|
若要變更標識碼在數據工作表檢視中的顯示方式,以改善可讀性。 使用 AS 運算子 (代表動作的關鍵詞,或在 SELECT 子句中使用欄位別名修改動作) 。 欄位別名是您指派給字段的名稱,讓結果更容易閱讀。 |
|
自定義FROM子句
自訂 |
範例 |
您可以在選取語句中使用資料表別名或指派給數據表的不同名稱。 如果數據表名稱很長,數據表別名就很實用,尤其是當您有多個字段具有來自不同數據表的相同名稱時。 |
若要從兩個字段中選取數據,兩者皆為具名標識碼,其中一個來自數據表 tblCustomer,另一個來自數據表 tblOrder:
使用 AS 運算子在 FROM 子句中定義資料表別名:
接著,您可以在 SELECT 子句中使用這些資料表別名,如下所示:
|
使用聯結將兩個數據源的成對記錄合併成單一結果,或指定如果關聯數據表中沒有對應的記錄,是否要包含這兩個數據表中的記錄。 聯結數據表,讓查詢合併數據表中的專案,並在其他數據表中沒有對應記錄時排除專案 |
FROM 子句看起來可能像這樣:
|
關於使用聯結
連接有兩種類型,即內部和外部聯接。 內部聯結在查詢中較為常見。 當您執行具有內部聯結的查詢時,結果只會顯示兩個聯結數據表中存在共同值的專案。
外部聯接會指定是否要包含沒有共同值存在的數據。 外部連接是方向性的,也就是說,您可以指定是否要包含來自聯結中指定之第一個數據表的所有記錄 (稱為左方聯結) ,或是要包含聯結中第二個數據表的所有記錄, (稱為右方聯結) 。 外部聯接具有下列 SQL 語法:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
請參閱在 [聯結數據 表和查詢] 中的查詢中使用聯結的詳細資訊。
自定義 WHERE 子句
WHERE 子句包含可協助限制查詢中傳回之項目的數目的準則。 查看查詢條件及其運作方式 的範例 。
自定義基本 WHERE 子句的範例是限制查詢的結果;假設您要找出客戶的電話號碼,但只能將姓氏記住為Bagel。 在此範例中,姓氏會儲存在 [姓氏] 字段中,因此 SQL 語法會是:
WHERE [LastName]='Bagel'
同時使用 WHERE 子句來合併具有相符數據,但數據類型不同的欄的數據源。 這會派上用場,因為您無法在具有不同數據類型的字段之間建立聯結。 使用一個字段做為另一個字段的準則,搭配 LIKE 關鍵詞。 例如,如果您想要使用 [資產] 數據表和 [員工] 數據表中的數據,則只有在 [資產] 數據表資產類型欄位中的資產類型在 [員工] 數據表的 [數量] 欄位中有數位 3 時,WHERE 子句的外觀如下:
WHERE field1 LIKE field2
重要: 您無法為 WHERE 子句中搭配匯總函數使用的欄位指定準則。 您可改用 HAVING 子句來為彙總欄位指定準則。
使用 UNION 運算元自定義
當您想要查看多個類似選取查詢的結果組合檢視時,請使用 UNION 運算元。 例如,如果您的資料庫有 [產品] 數據表和 [服務] 數據表,且兩者都有三個字段:專屬優惠或產品或服務、價格、保固或保證。 雖然 [產品] 數據表會儲存保固資訊,而 [服務] 數據表會儲存保證資訊,但基本資訊是相同的。 您可以使用聯合查詢合併兩個資料表中的三個字段,如下所示:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
當您執行查詢時,每一組對應欄位的數據會合併成一個輸出欄位。 若要在結果中包含任何重複的列,請使用 ALL 運算符。
附註: Select 語句的輸出字段數目必須相同、順序相同,且數據類型相同或相容。 在進行聯集查詢時,數字和文字資料類型是相容的。
如需聯合查詢的詳細資訊,請參閱 使用聯合查詢檢視多個查詢的整合結果。