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

MS SQL Server DELETE 敘述句完整解析:語法、四大刪除模式與游標定位刪除

     編輯:關於SqlServer

11.2.1 DELETE 語法結構

DELETE [FROM] table_name | view_name | rowset_function
[WITH (table_hint [...n])]
[FROM table_source [...n]]
[WHERE {search_condition | CURRENT OF cursor_name}]
[GLOBAL] cursor_name

DELETE 語法圖1 DELETE 語法圖2 DELETE 語法圖3 DELETE 語法圖4

四大刪除模式

模式WHERE 子句特性
搜尋刪除WHERE search_condition依條件篩選刪除列,最常用。
定位刪除WHERE CURRENT OF cursor_name刪除游標當前指向列,精確度最高,需游標支援更新。
全表刪除省略 WHERE刪除所有列,高風險,慎用。
多表聯結刪除FROM 子句聯結T-SQL 擴充,依聯結關係刪除多表資料。

關鍵參數說明

  • WITH (table_hint):指定鎖定提示(如 ROWLOCK、TABLOCK)。
  • rowset_function_limited:OPENQUERY/OPENROWSET 遠端資料來源。
  • GLOBAL:指定使用全域游標(同名區域/全域並存時)。

實務警示

  • 無 WHERE 刪除全表:極易造成災難,生產環境建議加上 @@ROWCOUNT 檢查或觸發器防護。
  • TRUNCATE TABLE 效能優於全表 DELETE,但不觸發觸發器、不可回滾(隱含交易)、需較高權限。
  • 定位刪除需游標宣告含 FOR UPDATE,且非 INSENSITIVE/STATIC。

總結

DELETE 提供從條件式、游標定位到多表聯結的多樣刪除能力。理解四大模式差異、記錄檔影響與替代方案(TRUNCATE、分批刪除),是資料維運的基本功。

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