mysql中drop、delete、truncate的區別簡述


一、區別

1.去什么?

truncate table 和 delete只刪除數據(記錄)不刪除表的結構;drop語句將刪除表的數據(記錄)和表結構依賴的約束(constrain),觸發器(trigger),索引(index),保留依賴於該表的存儲過程/函數,但是變為invalid狀態 .

譬如:delete 是單殺,truncate 是團滅,drop 是把電腦摔了。

 

2.范疇:

delete DML 語句,操作完以后如果沒有不想提交事務還可以回滾,truncate drop DDL 語句,操作完馬上生效,不能回滾.

譬如:delete 是發微信說分手,后悔還可以撤回,truncate drop 是直接扇耳光說滾,不能反悔。

 

3.在自增字段的表中:

truncate之后的自增字段從1開始計數了[即truncate是摧毀原來的表重新創建一張結構相同的表(有原表的結構)],delete的仍保留原來的最數數值[即如果添加數據從最值+1開始],drop將表的結構也刪除了(原表數據和結構都沒有了)

 譬如:drop 是神舟火箭,truncate 是和諧號動車,delete 是自行車。

 

二、總結:

1.執行速度:一般,drop> truncate > delete。

2.在使用drop和truncate時一定要注意,雖然可以恢復,但為了減少麻煩,還是要慎重。

3.如果想刪除部分數據用delete,注意帶上where子句,回滾段要足夠大;
如果想刪除表,當然用drop;
如果想保留表而將所有數據刪除,如果和事務無關,用truncate即可;
如果和事務有關,或者想觸發trigger,還是用delete
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM