SQL 刪除資料表結構與資料的三大指令 DROP TABLE、TRUNCATE TABLE、DELETE FROM 差異巨大,選錯指令恐造成不可逆損失。
| 指令 | 刪除內容 | 保留結構 | 觸發 Trigger | 可 Rollback | 速度 | Identity 重置 |
|---|---|---|---|---|---|---|
| DROP TABLE | 結構 + 資料 + 索引 + 條件約束 | 否 | 否 | 否 (隱含 Commit) | 最快 | 不適用 |
| TRUNCATE TABLE | 所有資料 | 是 | 否 | 否 (隱含 Commit) | 快 | 是 (歸零) |
| DELETE FROM | 符合 WHERE 的資料 (無 WHERE 則全刪) | 是 | 是 | 是 (需明確 Commit) | 慢 (逐列) | 否 |
-- 完全移除表
DROP TABLE employee;
-- 清空表資料,保留結構、重置自增
TRUNCATE TABLE employee;
-- 條件刪除,可回滾
DELETE FROM employee WHERE hired_date < '2020-01-01';
SELECT A1.store_name AS Store, SUM(Sales) AS "Total Sales"
FROM Store_Information A1
GROUP BY A1.store_name;
/* 結果
Store Total Sales
Los Angeles $1800
San Diego $250
Boston $700 */
DROP/TRUNCATE 前,務必確認備份可用。TRUNCATE + 重新匯入保留資料,或分批 DELETE 避免記錄檔暴漲。DELETE 需搭配索引於 WHERE 條件欄位,否則全表掃描極慢。