用於查詢與修改數據的核心指令集:
SELECT(查詢)INSERT(插入)UPDATE(更新)DELETE(刪除)與 DDL(結構定義)、DCL(權限控制)並列為 SQL 三大語言分類。
單條語句執行範圍內定義的臨時結果集,類似派生表但更強大:
| 特性 | 派生表 | CTE |
|---|---|---|
| 存儲方式 | 不存儲為對象 | 不存儲為對象 |
| 生命週期 | 僅查詢期間 | 僅查詢期間 |
| 自引用 | 不支援 | 支援(遞歸) |
| 多次引用 | 需重複定義 | 同一查詢中可多次引用 |
WITH DeptMaxSalary AS (
SELECT DepartmentId, MAX(Salary) AS MaxSal
FROM Employee
GROUP BY DepartmentId
)
SELECT e.*
FROM Employee e
JOIN DeptMaxSalary dms ON e.DepartmentId = dms.DepartmentId
AND e.Salary = dms.MaxSal;
#TempTable 物化,配合索引提升後續 JOIN 效能。MAXRECURSION 防止無限循環。