首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server SELECT 陳述式完整語法深度解析:從子句結構到進階提示

     編輯:關於SqlServer

SELECT 完整語法架構

SELECT [ALL | DISTINCT] [TOP n [PERCENT] [WITH TIES]]

[INTO new_table]
[FROM  [,...n]]
[WHERE ]
[GROUP BY [ALL] group_by_expression [,...n] [WITH {CUBE | ROLLUP}]]
[HAVING ]
[ORDER BY {order_by_expression [ASC | DESC]} [,...n]]
[COMPUTE { {AVG|COUNT|MAX|MIN|STDEV|STDEVP|VAR|VARP|SUM}(expression)} [,...n] [BY expression [,...n]]]
[FOR {BROWSE | XML {RAW|AUTO|EXPLICIT} [,XMLDATA] [,ELEMENTS] [,BINARY BASE64]}]
[OPTION ( [,...n])]

各子句詳細說明

1. SELECT 子句

  • ALL(預設)保留重複值;DISTINCT 移除重複(NULL 視為相同)。
  • TOP n [PERCENT] [WITH TIES]:限制回傳列數,WITH TIES 需配合 ORDER BY 包含同序值列。
  • select_list:*、table.*、column|expression [AS alias]、alias = expression。
  • IDENTITYCOL/ROWGUIDCOL 參照身分識別/全域唯一識別碼欄。

2. INTO 子句

將查詢結果存入新資料表(結構由 SELECT 列決定,計算欄位變為實體欄位)。需資料庫選項 Select into/bulkcopy 為 True。

3. FROM 子句

支援資料表、檢視、資料列集函數、OPENXML、衍生資料表(子查詢)、聯結(INNER|LEFT|RIGHT|FULL [OUTER] JOIN、CROSS JOIN、JOIN HINT)。

4. WHERE 子句

篩選列條件(search_condition),支援舊式外部聯結語法(*=/=*,不標準)。

5. GROUP BY 子句

  • ALL:包含無符合 WHERE 條件的群組(NULL 填充),不可與 CUBE/ROLLUP 並用。
  • CUBE:產生所有維度組合彙總列。
  • ROLLUP:依欄位順序產生階層彙總列(對順序敏感)。

6. HAVING 子句

群組篩選條件,作用於群組而非單列。TEXT/NTEXT/IMAGE 不可用。

7. UNION 運算子

合併多查詢結果集。規則:欄位數/順序一致、資料型別相容。ALL 保留重複列。

8. ORDER BY 子句

排序規則(欄位名/別名/運算式)。ASC/DESC。未用 DISTINCT/UNION 時可排序未在 SELECT 列出的欄位。NULL 視為最小值。

9. COMPUTE 子句

結果末尾產生彙總列(BY 需配合 ORDER BY)。忽略 NULL,不可用 DISTINCT。與 SELECT INTO 不相容。

10. FOR 子句

  • BROWSE:支援 DB-Library 游標瀏覽更新(需 timestamp 欄與唯一索引)。
  • XML:RAW/AUTO/EXPLICIT 三種模式產生 XML,可加 XMLDATA、ELEMENTS、BINARY BASE64 選項。

11. OPTION 子句(查詢提示)

提示功能
{HASH|ORDER} GROUPGROUP BY/COMPUTE 使用雜湊/排序法
{MERGE|HASH|CONCAT} UNIONUNION 運算方法
{LOOP|MERGE|HASH} JOIN聯結演算法
FAST n優化快速回傳前 n 列
FORCE ORDER維持 FROM 項目聯結順序
MAXDOP n覆寫最大平行度設定
ROBUST PLAN最大列容量計畫
KEEP PLAN / KEEPFIXED PLAN放寬/禁止自動重新編譯
EXPAND VIEWS展開索引檢視

重要提醒

  • 子句順序固定,不可任意調換。
  • @@TEXTSIZE 限制單次讀取 TEXT/IMAGE 資料量(預設 4KB,最大 2GB)。

小結

掌握 SELECT 完整語法與各子句語意,是撰寫高效、正確 T-SQL 查詢的基石。善用查詢提示需深度理解優化器行為,謹慎使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved