編輯 SQL 語句以銳利化查詢結果

編輯 SQL 語句以銳利化查詢結果

如果您的查詢不夠努力,新增一些基本的 SQL 語句可協助集中結果。 讓我們看看幾種類型的 SQL 語句,以及您可能會編輯的子句或部分,以取得您想要的結果。

附註:  本文內容不適用於 Access Web App (此為使用 Access 設計並於線上發佈的資料庫類型)。

本文內容

建立 Select 語句

SQL select 語句有兩到三個子句。 SELECT 子句會告訴資料庫要在哪裡尋找資料,並要求它返回特定結果。

附註:  SELECT 語句的結尾一 (;) 最後一個子句的結尾,或 SQL 語句結尾的行本身。

下列選取語句會要求 Access 從電子郵件地址和公司欄、連絡人資料表取得資訊,特別是從市/市欄中找到「西雅圖」的地方。

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

上述查詢包含 SELECT、FROM 和 WHERE 三個子句。

1. SELECT 子句會列出包含您要使用之資料的欄,以及具有運算子 (SELECT) ,後面接著兩個識別碼 (電子郵件地址和公司) 。 如果識別碼具有空格或特殊字元 (例如"E-mail Address") ,請用方括弧括住識別碼。

2. FROM 子句可識別來源資料表。 在此範例中,其具有運算子 (FROM) ,後面接著識別碼 (連絡人) 。

3. WHERE 子句是選擇性子句。 範例中的運算子是 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 子句會像這樣:

SELECT DISTINCT [txtCustomerPhone] 

若要變更識別碼在資料工作表視圖中的顯示方式,以改善可讀性。

使用 AS 運算子 (代表在 SELECT 子句中使用欄位別名) 動作或修改動作的關鍵字。 欄位別名是指派給欄位的名稱,讓結果更容易閱讀。

SELECT [txtCustPhone] AS [Customer Phone]

自訂 FROM 子句

自訂

範例

您可以在 select 語句中,使用資料表別名或指派給資料表的不同名稱。 如果資料表名稱很長,資料表別名就很有用,尤其是當您有多個欄位擁有不同資料表的相同名稱時。

若要從兩個名為 ID 的欄位選取資料,其中一個欄位來自 tblCustomer 資料表,另一個來自資料表 tblOrder:

SELECT [tblCustomer].[ID], 
[tblOrder].[ID]

使用 AS 運算子在 FROM 子句中定義資料表別名:

FROM [tblCustomer] AS [C], 
[tblOrder] AS [O]

接著,您可以在 SELECT 子句中使用這些資料表別名,如下所示:

SELECT [C].[ID], 
[O].[ID]

使用聯結將來自兩個數據源的成對記錄合併為單一結果,或指定是否要在關聯資料表中沒有對應記錄時包含來自任一資料表的記錄。

連接資料表,讓查詢合併資料表中的專案,並排除其他資料表中沒有對應記錄的專案

FROM 子句看起來可能像這樣:

FROM [tblCustomer] 
INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

關於使用聯聯

連接有兩種類型,即內外連接。 內部連接在查詢中更為常見。 當您使用內部連接執行查詢時,結果只會顯示兩個連接資料表中都有共通值的專案。

外部連接會指定是否要包含沒有共通值的資料。 外部連接具有方向性,也就是說,您可以指定是否要包含來自聯聯中指定之第一個資料表的所有記錄 (稱為左聯) ,或將聯聯中第二個數據表的所有記錄 (稱為右連接) 。 外部連接具有下列 SQL 語法:

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2

請參閱有關在聯聯資料表和查詢的查詢中使用 聯聯的資訊

頁面頂端

自訂 WHERE 子句

WHERE 子句包含準則,可協助限制查詢中所返回的專案數目。 查看 查詢準則的範例 及其操作說明。

您可以自訂基本 WHERE 子句的範例是限制查詢的結果;假設您要尋找客戶的電話號碼,而且只能記住他的姓氏為 Bagel。 在此範例中,姓氏會儲存在 LastName 欄位中,因此 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 語句的輸出欄位數量必須相同、順序相同,而且資料類型必須相同或相容。 在進行聯集查詢時,數字和文字資料類型是相容的。

有關 Union 查詢詳細資訊,請參閱使用 聯集查詢來查看多個查詢的一致結果

頁面頂端

需要更多協助?

增進您的 Office 技巧
探索訓練
優先取得新功能
加入 Office 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×