天天看點

資料庫 drop,delete,truncate三種删除方式的具體差別drop:delete:truncate:

當你想清資料庫時,發現有這麼3種方式可以用

drop delete truncate

看一下三者的差別,選擇最合适的使用吧

drop:

1.drop 可以對表和資料庫使用

2.直接删除表結構和資料,

3.删除表的結構被依賴的限制(constrain),觸發器(trigger),索引(index); 依賴于該表的

存儲過程/函數将保留,但是變為invalid狀态

4.會立即釋放磁盤占用空間

5.DLL(data define language) 隐士送出,不支援復原

.

速度:★★★

delete:

1.能對table 和 view 使用

2.是從表中一行一行的删除,每一次的删除操作作為事務記錄儲存到日志中,支援復原操作

4.不會減少表或索引所占用的磁盤空間

4.DML(data maintain Language),這個操作會被放到 rollback segment中,事務送出後才生效。如果有相應的 tigger,執行的時候将被觸發

5.如果不使用where篩選語句,那麼将删除表中的所有記錄

.

速度:★

truncate:

1.隻能對table 使用

2.直接删除表中的所有資料,會保留表結構,不支援復原

3.如果誤删除,資料也可以恢複,比較麻煩

4.DDL,會隐式送出,是以,不能復原,不會觸發觸發器

5.如果是MYLSAM 存儲引擎會立刻釋放磁盤空間,如果是InnoDB 不是釋放磁盤空間

.

速度:★★

總體看 速度 drop > truncate > delete

但是3者的功能是不一樣的 選擇最合适的使用吧