| 類別 | 關鍵字 | 核心用途 |
|---|---|---|
| DML | SELECT, INSERT, UPDATE, DELETE, MERGE, BULK INSERT, OUTPUT | 數據操縱 |
| DDL | CREATE/ALTER/DROP TABLE|VIEW|INDEX|PROCEDURE|FUNCTION|TRIGGER|SCHEMA|TYPE|ASSEMBLY|XML SCHEMA COLLECTION|FULLTEXT CATALOG|DATABASE|LOGIN|USER|ROLE|SERVER ROLE|AVAILABILITY GROUP|ENDPOINT|CREDENTIAL|CERTIFICATE|ASYMMETRIC KEY|SYMMETRIC KEY|SEQUENCE|SYNONYM|PARTITION FUNCTION|PARTITION SCHEME|RESOURCE POOL|WORKLOAD GROUP|SERVER AUDIT|DATABASE AUDIT SPECIFICATION|SERVER AUDIT SPECIFICATION|SEARCH PROPERTY LIST|SEMANTIC INDEX|COLUMN MASTER KEY|COLUMN ENCRYPTION KEY|EXTERNAL DATA SOURCE|EXTERNAL FILE FORMAT|EXTERNAL TABLE|EXTERNAL LIBRARY|EXTERNAL LANGUAGE|DATABASE SCOPED CREDENTIAL|EXTERNAL STREAM|EXTERNAL JOB|EXTERNAL RESOURCE POOL|EXTERNAL WORKLOAD GROUP|EXTERNAL AVAILABILITY GROUP|EXTERNAL ENDPOINT|EXTERNAL CERTIFICATE|EXTERNAL ASYMMETRIC KEY|EXTERNAL SYMMETRIC KEY|EXTERNAL MASTER KEY|EXTERNAL DATABASE SCOPED CREDENTIAL|EXTERNAL SEARCH PROPERTY LIST|EXTERNAL SEMANTIC INDEX|EXTERNAL COLUMN MASTER KEY|EXTERNAL COLUMN ENCRYPTION KEY|EXTERNAL SEQUENCE|EXTERNAL SYNONYM|EXTERNAL PARTITION FUNCTION|EXTERNAL PARTITION SCHEME|EXTERNAL RESOURCE POOL|EXTERNAL WORKLOAD GROUP|EXTERNAL AVAILABILITY GROUP|EXTERNAL ENDPOINT|EXTERNAL CERTIFICATE|EXTERNAL ASYMMETRIC KEY|EXTERNAL SYMMETRIC KEY|EXTERNAL MASTER KEY|EXTERNAL DATABASE SCOPED CREDENTIAL|EXTERNAL SEARCH PROPERTY LIST|EXTERNAL SEMANTIC INDEX|EXTERNAL COLUMN MASTER KEY|EXTERNAL COLUMN ENCRYPTION KEY|EXTERNAL SEQUENCE|EXTERNAL SYNONYM|EXTERNAL PARTITION FUNCTION|EXTERNAL PARTITION SCHEME | 對象定義 |
| DCL | GRANT, DENY, REVOKE | 權限控制 |
| TCL | BEGIN TRAN, COMMIT, ROLLBACK, SAVE TRAN, SET IMPLICIT_TRANSACTIONS, SET XACT_ABORT | 事務控制 |
-- 變量聲明
DECLARE @i INT = 0, @s NVARCHAR(100) = N'', @dt DATETIME2 = SYSUTCDATETIME();
-- 條件分支
IF @i > 0 BEGIN PRINT 'Positive'; END
ELSE IF @i < 0 BEGIN PRINT 'Negative'; END
ELSE BEGIN PRINT 'Zero'; END
-- CASE 表達式 (標量/搜索)
SELECT CASE WHEN JobLevel = 1 THEN Salary*1.08
WHEN JobLevel = 2 THEN Salary*1.07
ELSE Salary*1.05 END AS NewSalary
FROM Employees;
-- 循環
WHILE @i < 100
BEGIN
SET @i += 1;
IF @i % 7 = 0 CONTINUE;
IF @i = 50 BREAK;
PRINT @i;
END
-- 等待
WAITFOR DELAY '00:00:10'; -- 等待 10 秒
WAITFOR TIME '23:59:59'; -- 等待至指定時間
-- 錯誤處理 (SQL 2005+)
BEGIN TRY
-- 高風險操作
INSERT INTO dbo.T (PK) VALUES (1); -- 可能重複鍵
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE();
THROW; -- 重拋 (2012+)
END CATCH
-- 動態 SQL (參數化)
DECLARE @Sql NVARCHAR(MAX) = N'SELECT * FROM dbo.T WHERE Id = @Id';
EXEC sp_executesql @Sql, N'@Id INT', @Id = 42;
| 分類 | 代表函數 | 典型用法 |
|---|---|---|
| 聚合 | COUNT, SUM, AVG, MIN, MAX, STDEV, VAR, STRING_AGG (2017+), GROUP_CONCAT (MySQL) | 統計分析 |
| 窗口 | ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE, SUM() OVER, AVG() OVER | 分頁、Top-N、同比環比 |
| 字符串 | SUBSTRING, LEFT, RIGHT, CHARINDEX, PATINDEX, REPLACE, REPLICATE, REVERSE, UPPER, LOWER, LTRIM, RTRIM, TRIM (2017+), CONCAT, CONCAT_WS (2017+), STRING_SPLIT (2016+), STRING_ESCAPE, FORMAT, QUOTENAME | 文本處理、拆分、拼接 |
| 日期時間 | GETDATE, SYSDATETIME, SYSUTCDATETIME, DATEADD, DATEDIFF, DATEPART, DATENAME, DAY, MONTH, YEAR, EOMONTH (2012+), DATEFROMPARTS, DATETIME2FROMPARTS, SWITCHOFFSET, TODATETIMEOFFSET, AT TIME ZONE (2016+) | 時間運算、時區、構造 |
| 轉換 | CAST, CONVERT, TRY_CAST, TRY_CONVERT, PARSE, TRY_PARSE, FORMAT | 類型轉換、容錯 |
| 數學 | ABS, SIGN, ROUND, CEILING, FLOOR, POWER, SQRT, EXP, LOG, LOG10, PI, RAND, CRYPT_GEN_RANDOM, SIN, COS, TAN, ATAN, DEGREES, RADIANS | 計算、加密隨機 |
| 系統/元數據 | OBJECT_ID, OBJECT_NAME, OBJECT_SCHEMA_NAME, OBJECT_DEFINITION, COL_NAME, COL_LENGTH, INDEX_COL, TYPE_NAME, DB_ID, DB_NAME, FILE_ID, FILE_NAME, HOST_ID, HOST_NAME, APP_NAME, PROGRAM_NAME, CLIENT_NET_ADDRESS, ORIGINAL_LOGIN, CURRENT_USER, SESSION_USER, SYSTEM_USER, SUSER_SNAME, SUSER_ID, IS_SRVROLEMEMBER, IS_MEMBER, HAS_PERMS_BY_NAME, PERMISSIONS, fn_listextendedproperty | 元數據查詢、權限檢查、審計 |
| JSON/XML (2016+) | JSON_VALUE, JSON_QUERY, JSON_MODIFY, OPENJSON, ISJSON, JSON_PATH_EXISTS (2022+), FOR JSON AUTO/PATH, FOR XML AUTO/RAW/PATH/EXPLICIT, XQUERY (query/value/exist/nodes/modify) | 半結構化數據處理 |
| 領域 | 核心視圖/函數 | 典型查詢 |
|---|---|---|
| 性能/等待 | sys.dm_os_wait_stats, sys.dm_os_waiting_tasks, sys.dm_exec_requests, sys.dm_exec_query_stats, sys.dm_exec_procedure_stats, sys.dm_exec_trigger_stats, sys.dm_db_index_usage_stats, sys.dm_db_missing_index_* | Top 等待、慢查詢、索引使用/缺失 |
| 內存/緩存 | sys.dm_os_buffer_descriptors, sys.dm_os_memory_clerks, sys.dm_os_memory_cache_entries, sys.dm_exec_cached_plans, sys.dm_exec_plan_attributes | PLE、計劃緩存、內存消費者 |
| I/O/存儲 | sys.dm_io_virtual_file_stats, sys.dm_io_pending_io_requests, sys.master_files, sys.database_files | 文件級延遲、吞吐、空間 |
| 併發/鎖 | sys.dm_tran_locks, sys.dm_tran_active_transactions, sys.dm_tran_database_transactions, sys.dm_os_spinlock_stats | 阻塞鏈、死鎖、長事務 |
| 安全/審計 | sys.server_principals, sys.database_principals, sys.server_permissions, sys.database_permissions, sys.sql_logins, fn_get_audit_file, sys.server_audits, sys.database_audit_specifications | 權限矩陣、審計日誌 |
| 高可用/復制 | sys.availability_groups, sys.availability_replicas, sys.dm_hadr_*, sys.replication_*, sys.dm_repl_* | AG 狀態、復制延遲、同步健康度 |
-- 會話級
SET NOCOUNT ON; -- 抑制 DONE_IN_PROC 消息,減少網絡往返
SET XACT_ABORT ON; -- 運行時錯誤自動回滾事務
SET DEADLOCK_PRIORITY LOW; -- 犧牲當前會話避免死鎖
SET TRANSACTION ISOLATION LEVEL READ COMMITTED SNAPSHOT; -- 會話級 RCSI
-- 數據庫級 (2016+)
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP = 4;
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION = OFF;
ALTER DATABASE SCOPED CONFIGURATION SET PARAMETER_SNIFFING = OFF;
ALTER DATABASE SCOPED CONFIGURATION SET QUERY_OPTIMIZER_HOTFIXES = ON;
| 版本 | 標誌性特性 |
|---|---|
| 2000 | 索引視圖、INSTEAD OF 觸發器、UDP、XML 初支持、復制增強 |
| 2005 | CTE、ROW_NUMBER/OVER、PIVOT/UNPIVOT、TRY/CATCH、XML 數據類型、CLR、Service Broker、鏡像、快照、SMO、SSIS/SSRS/SSAS |
| 2008 | MERGE、稀疏列、TVP、日期時間新類型、空間、FILESTREAM、壓縮、資源調控器、CDC、管理數據倉庫、IntelliSense |
| 2012 | AlwaysOn、Columnstore、OFFSET FETCH、SEQUENCE、THROW、CONTAINED DB、Semantic Search、Data Quality Services、Master Data Services |
| 2014 | In-Memory OLTP (Hekaton)、Buffer Pool Extension、Delayed Durability、Encrypted Backup、Azure 集成 |
| 2016 | JSON、R Services、PolyBase、Query Store、Live Query Statistics、Temporal Tables、Dynamic Data Masking、Row-Level Security、Always Encrypted |
| 2017 | Linux/Docker 支持、Graph DB、Adaptive Query Processing、Automatic Tuning、STRING_AGG、TRIM、CONCAT_WS |
| 2019 | Big Data Clusters、Java/Spark 集成、Memory-Optimized TempDB Metadata、Accelerated Database Recovery、Verifiable Credentials、UTF-8 Collation |
| 2022 | Parameter Sensitive Plan Optimization、Ledger、Azure Synapse Link、JSON_PATH_EXISTS、ISJSON、GENERATE_SERIES、DATETRUNC、DATE_BUCKET |
本手冊涵蓋 T-SQL 核心語法、程序化邏輯、高頻函數、系統視圖、設置選項、版本特性,**建議收藏離線備查**。實戰中請遵循「參數化、集合化、最小權限、可觀測」四大原則,配合 Query Store / Extended Events / 自動化巡檢構建現代化數據庫工程體系。