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

SQL Server 資料刪除與更新實戰:DELETE、TRUNCATE 與 UPDATE 進階用法

     編輯:關於SqlServer

資料異動操作直接影響資料庫一致性與效能。本文深入比較 DELETE 與 TRUNCATE 的差異,並展示 UPDATE 結合 REPLACE 的進階更新技巧,協助開發人員選擇最適合的資料維護策略。

一、資料刪除操作

1. 刪除特定記錄 (DELETE)

DELETE FROM 表名 WHERE id = 'xx';
  • 支援 WHERE 條件篩選。
  • 觸發 DELETE 觸發器。
  • 記錄交易日誌,可回滾。
  • 不重設 IDENTITY 欄位種子值。

2. 快速清空資料表 (TRUNCATE TABLE)

TRUNCATE TABLE 表名;
  • 不支援 WHERE 條件,僅能清空整表。
  • 不觸發觸發器。
  • 極少記錄日誌(僅記錄頁面釋放),速度極快。
  • 重設 IDENTITY 欄位回初始種子值。
  • 需具備 ALTER TABLE 權限。

3. DELETE vs TRUNCATE 核心差異比較

特性DELETETRUNCATE
可加 WHERE 條件是否
觸發器觸發不觸發
日誌記錄量逐列記錄極少 (頁面層級)
IDENTITY 種子保留現值重設初始值
執行速度較慢極快
權限需求DELETEALTER TABLE

二、資料更新操作

1. 基礎 UPDATE 語法

UPDATE 表名
SET [欄位名] = '新值'
WHERE [條件欄位] = '條件值';

2. 進階應用:搭配 REPLACE 進行批次字串替換

需求:將 19 歲以上會員名稱中的「星」字替換為「★」。

UPDATE 表名
SET name = REPLACE(name, '星', '★')
WHERE age > 19;

最佳實務建議

  • 大量刪除歷史資料時,優先考慮 TRUNCATE 或分批 DELETE 避免日誌暴增。
  • UPDATE 影響大量列時,建議分批處理並監控交易日誌成長。
  • 重要資料異動前務必備份,或使用交易區塊 (BEGIN TRAN) 確保可回滾。
  • 搭配 OUTPUT 子句可記錄異動前後的資料值,利於稽核追蹤。

理解 DELETE/TRUNCATE 的底層機制差異,能在資料維護作業中兼顧效能與資料完整性。

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