SELECT 陳述式

指示Microsoft Jet 資料庫引擎傳回資料庫中的資訊以做為記錄集合。

語法

SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}
    FROM tableexpression [, ...] [IN externaldatabase]
    [WHERE... ]
    [GROUP BY... ]
    [HAVING... ]
    [ORDER BY... ]
    [WITH OWNERACCESS OPTION]

SELECT 陳述式可分為以下幾個部份:

部份 敘述
predicate 以下所列述語之一: ALL、DISTINCT、DISTINCTROW 或 TOP。 您可以使用 predicate 來限制傳回之記錄的數量。 如果沒有指定述語,其預設值為 ALL。
* 從特定的單個或多個資料表中選取全部的欄位。
table 資料表的名稱,此資料表中包含已被選取的記錄之欄位。
field1, field2 包含了您要擷取資料的欄位之名稱。 如果您的資料包含一個以上的欄位,它們將被依序擷取。
alias1, alias2 使用作為欄名的名稱,以代替在 table 中原有的欄名。
tableexpression 包含了您要擷取的資料的單個或以上的資料表之名稱。
externaldatabase 包含了 tableexpression 中的資料表的資料庫之名稱,如果這些資料表不存在於目前的資料庫。

註解

若要執行此運算,Microsoft® Jet 資料庫引擎會搜尋指定的資料表,抽出所選擇的欄,並選取與該選擇條件吻合的列,並且依指定的順序來排序或群組所選出的列。

SELECT 陳述式不會變更資料庫之中的資料。

SELECT 通常是 SQL 陳述式的第一個字。 大部份的 SQL 陳述式為 SELECT 或 SELECT...INTO 陳述式兩者之一。

一個 SELECT 陳述式的最基本語法是:

SELECT fields FROM table

您可以使用星號 (*) 來選擇資料表中的所有欄位。 下列範例為在員工資料表之中選取全部的欄位:

SELECT * FROM Employees;

如果在 FROM 子句中之欄位名稱包含在一個以上的資料表中的話,請在此欄位之前加上資料表名稱和 . (點) 運算子。 在下列範例之中,[部門] 欄位將出現在員工資料表中及管理員資料表之中。 SQL  陳述式將由員工資料表和管理員資料表之中來選取部門:

SELECT Employees.Department, Supervisors.SupvName

FROM Employees INNER JOIN Supervisors

WHERE Employees.Department = Supervisors.Department;

在建立 Recordset 物件之後,Microsoft Jet 資料庫引擎會以資料表的欄位名稱作為在 Recordset 物件中的欄位物件名稱。 如果您要不同的欄位名稱或不要由運算式產生的欄位名稱,使用 AS 保留字。 下列範例為在最後結果的 Recordset 物件中,使用 Birth 標題來為傳回的 Field 物件命名:

SELECT BirthDate AS Birth FROM Employees;

無論您何時使用聚合函數或查詢,且該查詢傳回不明確或重複的 Field 物件名稱,您必須使用 AS 子句來提供 Field 物件的替代名稱。 下列範例為在最後結果的 Recordset 物件中,使用 HeadCount 標題來為傳回的 Field 物件命名:

SELECT COUNT(EmployeeID) AS HeadCount FROM Employees;

您可以使用 SELECT 陳述式中之其它子句來進一步限制和組織您傳回的資料。