UPDATE table_name
SET column_name = {expression | DEFAULT | NULL} [,...n]
[FROM table_source [,...n]]
[WHERE search_condition]

| 子句 | 功能 |
|---|---|
SET | 指定更新方式:以運算式/常數/變數/子查詢取代欄位值。IDENTITY 欄位不可更新。 |
DEFAULT | 使用欄位定義的預設值。 |
NULL | 明確設為 NULL。 |
@variable = column = expression | 同時將變數與欄位設為運算式值(注意與 @var = col, col = expr 差異)。 |
WHERE | 限定更新範圍。省略則更新全表(高風險)。 |
FROM | 引入其他表來源,支援聯結更新。FROM 中的別名不可用於 SET。 |

大量 UPDATE 會將舊值寫入交易記錄檔,可能導致記錄檔爆滿,交易中止並回滾。兩大解法:
BACKUP LOG 截斷記錄檔(需完整復原模式)。
WHERE 子句,避免全表誤更新。TOP (n) 限制單批次筆數(SQL Server 2005+)。READ COMMITTED SNAPSHOT 隔離等級減少封鎖。UPDATE 雖語法簡單,但大量資料場景下的記錄檔管理、鎖定範圍與效能調校極具深度。分批更新搭配記錄檔備份是企業級大量資料維運的標準作法。