如果您的查詢工作不夠努力,添加一些基本 SQL 語句可以幫助集中您的結果。 讓我們看看幾種類型的 SQL 語句以及您可以編輯以獲得所需結果的子句或部分。
本文內容
建立 Select 陳述式
SQL select 陳述式有兩到三個子句。 SELECT 子句告訴資料庫在哪裡尋找資料,並要求它傳回特定的結果。
附註: SELECT 陳述式一律以分號 (;) 結尾,在最後一個子句的結尾,或在 SQL 陳述式結尾的一行上。
下列 select 陳述式會要求 Access 從 [連絡人] 資料表的 [電子郵件地址] 和 [公司] 資料行取得資訊,特別是在 [城市] 資料行中找到 “西雅圖” 的位置。
上述查詢有三個子句SELECT、FROM、WHERE。
1. SELECT 子句會列出包含您要使用之資料的欄,並具有運算子 (SELECT) 後接兩個識別碼 (E-mail Address 與 Company) 。 如果識別碼有空格或特殊字元 (例如「電子郵件地址」) 請將識別碼括在方括號內。
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 子句
自訂 |
範例 |
---|---|
您可以使用表格別名或指派給 select 陳述式中表格的不同名稱。 如果表格名稱的名稱很長,則表格別名很有用,尤其是當您有多個來自不同表格具有相同名稱的欄位時。 |
若要從兩個名為 ID 的欄位中選取資料,其中一個欄位來自資料表 tblCustomer,另一個來自資料表 tblOrder:
使用 AS 運算子在 FROM 子句中定義表格別名:
然後,您可以在 SELECT 子句中使用這些表格別名,如下所示:
|
使用聯結將來自兩個資料來源的記錄配對合併為單一結果,或指定如果相關資料表中沒有對應的記錄,是否要併入任一資料表中的記錄。 聯結資料表,讓查詢合併資料表中的專案,並在另一個資料表中沒有對應的記錄時排除專案 |
以下是 FROM 子句的樣子:
|
關於使用聯結
有兩種類型的聯結:內部聯結和外部聯結。 內部聯結在查詢中更為常見。 當您使用內部聯結執行查詢時,結果只會顯示兩個聯結資料表中存在通用值的專案。
外部聯結會指定是否要包含不存在一般值的資料。 外部聯結是定向的,這表示您可以指定是否要包含聯結 (中指定的第一個表格中的所有記錄 (稱為左聯結) ),或將第二個表格中的所有記錄併入稱為右聯結) 的聯結 (中。 外部聯結具有下列 SQL 語法:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
請參閱 聯結資料表和查詢中有關在查詢中使用聯結的詳細資訊。
自訂 WHERE 子句
WHERE 子句包含有助於限制查詢中傳回項目數目的準則。 請參閱 查詢準則的範例 及其運作方式。
如何自訂基本 WHERE 子句的範例是限制查詢的結果;假設您要找到客戶的電話號碼,並且只能記住他的姓氏為百吉餅。 在此範例中,姓氏儲存在 LastName 欄位中,因此 SQL 語法會為:
WHERE [LastName]='Bagel'
也使用 WHERE 子句來結合具有相符資料但資料類型不同的資料行的資料來源。 這很方便,因為您無法在具有不同資料類型的欄位之間建立聯結。 使用一個欄位作為另一個欄位的準則,並搭配 LIKE 關鍵字。 例如,如果您想要使用 Assets 資料表和 Employees 資料表中的資料,只有當 Assets 資料表的 [資產類型] 欄位中的資產類型在 [員工] 資料表的 [數量] 欄位中具有數字 3 時,您的 WHERE 子句的外觀如下:
WHERE field1 LIKE field2
重要: 您無法在 WHERE 子句中指定與彙總函數搭配使用的欄位的準則。 您可改用 HAVING 子句來為彙總欄位指定準則。
使用 UNION 運算子進行自訂
當您想要查看數個類似選取查詢結果的合併檢視時,請使用 UNION 運算子。 例如,如果您的資料庫有 Products 資料表和 Services 資料表,且它們都有三個欄位:獨家優惠或產品或服務、價格、保固或保證。 雖然「產品」表格會儲存保固資訊,而「服務」表格會儲存保固資訊,但基本資訊是相同的。 您可以使用聯合查詢來合併兩個資料表中的三個欄位,如下所示:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
當您執行查詢時,每組對應欄位的資料都會合併為一個輸出欄位。 若要在結果中包含任何重複的資料列,請使用 ALL 運算子。
附註: Select 陳述式必須具有相同數目的輸出欄位、相同順序,以及具有相同或相容的資料類型。 在進行聯集查詢時,數字和文字資料類型是相容的。
如需聯合查詢的詳細資訊,請參閱 使用聯合查詢來檢視多個查詢的統一結果。