首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL DROP TABLE 刪除資料表與 TRUNCATE/DELETE 差異解析

     編輯:MySQL 資料庫相關知識

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';

進階:別名與 GROUP BY 範例 (原文附錄)

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 條件欄位,否則全表掃描極慢。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved