1. 程式人生 > >Truncate、Drop、Delete的區別與用法

Truncate、Drop、Delete的區別與用法

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