本節提供 SELECT 陳述式的完整 BNF 風格語法定義,供開發撰寫複雜查詢時查閱。初學者可略過,直接閱讀後續實戰章節。
SELECT statement ::=
[ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } [,...n] ]
[ COMPUTE { { AVG | COUNT | MAX | MIN | SUM } (expression) } [,...n]
[ BY expression [,...n] ] ]
[ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }
[ , XMLDATA ] [ , ELEMENTS ] [ , BINARY base64 ] } ]
[ OPTION ( [,...n] ) ]
::=
{ | ( ) }
[ UNION [ALL] | ( ) [...n] ]
::=
SELECT [ ALL | DISTINCT ]
[ {TOP integer | TOP integer PERCENT} [ WITH TIES] ]
[ INTO new_table ]
[ FROM {} [,...n] ]
...

| 子句 | 核心功能 |
|---|---|
SELECT LIST | 投影:指定回傳欄位、運算式、彙總函數 |
INTO new_table | 將結果建立新表 |
FROM | 指定資料來源(表、視圖、衍生表、函數、聯結) |
WHERE | 列篩選條件 |
GROUP BY | 分組彙總 |
HAVING | 分組後篩選 |
UNION | 合併多查詢結果 |
ORDER BY | 結果排序 |
COMPUTE | 傳統報表小計/總計(已棄用,建議用 GROUPING SETS/ROLLUP/CUBE) |
FOR XML | 結果輸出為 XML 格式 |
OPTION | 查詢提示(強制索引、最大執行緒等) |
SELECT/FROM/WHERE/GROUP BY/HAVING/ORDER BY 核心六子句,其餘按需查閱。WITH (CTE)、APPLY、PIVOT/UNPIVOT、GROUPING SETS 等強大功能,本語法為 2000 版本基準。完整語法雖冗長,但結構清晰:查詢規範 → 集合運算 → 排序/輸出格式/提示。理解此層級架構,能系統性地組裝任意複雜度的查詢陳述式。