刪除特定資料列 (DELETE)
DELETE FROM TableName WHERE Condition;
- 不加
WHERE 將刪除全表資料,請極度謹慎。
- 大量刪除建議分批次 (如
TOP (1000) 迴圈) 避免交易記錄暴增與長時間鎖定。
- 需觸發 Trigger、記錄日誌、可回滾;若要清空全表且不需日誌,考慮
TRUNCATE TABLE (需權限、無 FK 參考)。
修改資料表結構 (ALTER TABLE)
刪除欄位
ALTER TABLE TableName DROP COLUMN ColumnName;
⚠ 原文寫法 DROP 新列名 有誤,正確為 DROP COLUMN 欲刪除的欄位名。
常見 ALTER TABLE 操作補充
| 操作 | 語法範例 |
| 新增欄位 | ALTER TABLE TableName ADD ColumnName INT NULL;
| 修改欄位類型 | ALTER TABLE TableName ALTER COLUMN ColumnName NVARCHAR(100) NOT NULL;
| 新增主鍵 | ALTER TABLE TableName ADD CONSTRAINT PK_TableName PRIMARY KEY (ID);
| 新增外鍵 | ALTER TABLE ChildTable ADD CONSTRAINT FK_Child_Parent FOREIGN KEY (ParentID) REFERENCES ParentTable(ID);
| 新增預設值 | ALTER TABLE TableName ADD CONSTRAINT DF_Table_Col DEFAULT (GETDATE()) FOR Col;
執行前檢查清單
- 確認備份可用 (時間點復原/完整備份)。
- 檢查相依物件:檢視表、預存程序、函數、觸發器是否參考該欄位/資料表。
- 評估鎖定影響:大表結構變更可能導致 Sch-M 鎖,建議維護時段執行。
- 準備回滾腳本 (如重建欄位、恢復資料)。