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

MS SQL Server UPDATE 敘述句完整解析:語法、範例與大量更新策略

     編輯:關於SqlServer

11.3.1 UPDATE 語法結構

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

UPDATE 語法圖

關鍵子句說明

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

11.3.2 更新記錄實例

更新範例1 更新範例2 更新範例3

11.3.3 大量資料更新策略

大量 UPDATE 會將舊值寫入交易記錄檔,可能導致記錄檔爆滿,交易中止並回滾。兩大解法:

  1. 擴大記錄檔空間:成本較高,非根本解。
  2. 分批更新 + 定期備份記錄檔:將單一大更新拆解為多個小批次,批次間執行 BACKUP LOG 截斷記錄檔(需完整復原模式)。

分批更新範例

最佳實務

  • 永遠加上 WHERE 子句,避免全表誤更新。
  • 大量更新前預估記錄檔成長,規劃分批大小與備份頻率。
  • 使用 TOP (n) 限制單批次筆數(SQL Server 2005+)。
  • 考慮 READ COMMITTED SNAPSHOT 隔離等級減少封鎖。

總結

UPDATE 雖語法簡單,但大量資料場景下的記錄檔管理、鎖定範圍與效能調校極具深度。分批更新搭配記錄檔備份是企業級大量資料維運的標準作法。

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