Truncate、Drop、Delete的區別與用法
阿新 • • 發佈:2018-12-21
SQL語句中刪除資料的幾種方式
今日在刪除資料時,發現除了常用的Delete & Drop語句之外,還有Truncate也是與刪除資料相關的,針對上述三種有進行簡單的比較與整理
1)從刪除機制上來看
把table當作黑板,資料當作黑板上的文字
Delete:逐行刪除資料,相當於用黑板擦一行一行的擦黑板
Drop:刪除整個表,相當於直接把黑板扔掉
Truncate:清空表空間內的資料,相當於把原先寫有資料的黑板扔掉,重新換上了一塊和原來一樣的黑板(表結構一樣)
2)差異性:
Delete的資料是可以RollBack
因為刪除的機制是每次刪除一行資料,並且將對應的刪除動作記錄在日誌中,以便於進行回滾的操作
語言型別是DML(資料庫操作語言),提交後會先將動作進行記錄,需要commit後才能生效
Drop & Truncate是DLL(資料庫定義語言),操作會立即生效,且無法進行回滾
3)從速度上來看:Drop>Truncate>Delete
4)從範圍上來看
Delete的物件Table & View,但是Truncate的物件Table
用法:
Delete:
- 刪除部分資料(部分列,且需要帶上where語句)
- 與事物相關,觸發trigger
Drop:
- 刪除所有的資料,但是保留表的結構
Truncate
- 直接刪除整個表或者整個Database