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

| 模式 | WHERE 子句 | 特性 |
|---|---|---|
| 搜尋刪除 | WHERE search_condition | 依條件篩選刪除列,最常用。 |
| 定位刪除 | WHERE CURRENT OF cursor_name | 刪除游標當前指向列,精確度最高,需游標支援更新。 |
| 全表刪除 | 省略 WHERE | 刪除所有列,高風險,慎用。 |
| 多表聯結刪除 | FROM 子句聯結 | T-SQL 擴充,依聯結關係刪除多表資料。 |
WITH (table_hint):指定鎖定提示(如 ROWLOCK、TABLOCK)。rowset_function_limited:OPENQUERY/OPENROWSET 遠端資料來源。GLOBAL:指定使用全域游標(同名區域/全域並存時)。@@ROWCOUNT 檢查或觸發器防護。TRUNCATE TABLE 效能優於全表 DELETE,但不觸發觸發器、不可回滾(隱含交易)、需較高權限。FOR UPDATE,且非 INSENSITIVE/STATIC。DELETE 提供從條件式、游標定位到多表聯結的多樣刪除能力。理解四大模式差異、記錄檔影響與替代方案(TRUNCATE、分批刪除),是資料維運的基本功。