除了基本的 CRUD 語法,SQL Server 隱藏許多提升開發效率與查詢彈性的小技巧。本文揭露 INSERT DEFAULT VALUES、UPDATE/DELETE TOP、SELECT TOP ... WITH TIES、NULL 值快捷鍵輸入等實用技巧。
INSERT INTO [DBTrain].[dbo].[log_info]
DEFAULT VALUES;
適用於所有欄位皆有預設值或允許 NULL 的資料表,快速產生測試資料。
UPDATE TOP (3) [log_info]
SET info1 = '1001';
搭配 ORDER BY (需透過子查詢或 CTE) 可控制更新哪幾筆。
UPDATE TOP (80) PERCENT [log_info]
SET info2 = '1002';
依資料表當前筆數計算百分比,四捨五入到整數筆數。
DELETE TOP (100) FROM 表名 WHERE 條件;
DELETE TOP (10) PERCENT FROM 表名;
適用於大量資料分批刪除,避免交易日誌暴增與長時間鎖定。
ID | Name
1 | A
2 | B
2 | C
2 | D
3 | E
SELECT TOP 5 * FROM test ORDER BY id DESC;
-- 結果:ID 3, 2, 2, 2, 1 (僅 5 筆,第 3 個 ID=2 被截斷)
SELECT TOP 5 WITH TIES * FROM test ORDER BY id DESC;
-- 結果:ID 3, 2, 2, 2, 2, 1 (包含所有 ID=2 的並列列,共 6 筆)
規則: 必須搭配 ORDER BY 使用;若第 N 筆與第 N+1 筆排序鍵值相同,WITH TIES 會額外回傳所有相同鍵值的列。
$IDENTITY、$ROWGUID 系統欄位引用WRITE 子句進行大型資料類型部分更新OUTPUT 子句捕獲異動前後值掌握這些隱藏技巧,能在日常開發與維護中寫出更簡潔、彈性且高效的 T-SQL 程式碼。