中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中drop、truncate與delete的區別是什么

發布時間:2022-03-07 15:10:35 來源:億速云 閱讀:194 作者:iii 欄目:開發技術

本篇內容介紹了“mysql中drop、truncate與delete的區別是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1. drop:刪除數據庫

  • drop語句將表所占用的空間全釋放掉。

  • drop > truncate > delete

方式1:如果要刪除的數據庫存在,則刪除成功。如果不存在,則報錯

DROP DATABASE mytest1;

方式2:推薦。 如果要刪除的數據庫存在,則刪除成功。如果不存在,則默默結束,不會報錯。

DROP DATABASE IF EXISTS mytest1;	

2. 對比 TRUNCATE TABLE 和 DELETE FROM

相同點:都可以實現對表中所有數據的刪除,同時保留表結構。

不同點:

  • TRUNCATE TABLE:一旦執行此操作,表數據全部清除。同時,數據是不可以回滾的。

  • DELETE FROM:一旦執行此操作,表數據可以全部清除(不帶WHERE)。同時,數據是可以實現回滾的。

3. DDL 和 DML 的說明

① DDL(CREATE 、 DROP 、 ALTER、TRUNCATE 等)的操作一旦執行,就不可回滾。指令SET autocommit = FALSE對DDL操作失效。(因為在執行完DDL操作之后,一定會執行一次COMMIT。而此COMMIT操作不受 SETautocommit = FALSE影響。)

② DML(INSERT 、 DELETE 、 UPDATE 、 SELECT等)的操作默認情況,一旦執行,也是不可回滾的。但是,如果在執行DML之前,執行了 SET autocommit = FALSE,則執行的DML操作就可以實現回滾。

演示1:DELETE FROM 刪除數據后,恢復數據

mysql中drop、truncate與delete的區別是什么

SET autocommit = FALSE;

mysql中drop、truncate與delete的區別是什么

DELETE FROM myemp3;

mysql中drop、truncate與delete的區別是什么

查詢后數據為空

mysql中drop、truncate與delete的區別是什么

回滾數據

mysql中drop、truncate與delete的區別是什么

再次查詢,可以看到恢復數據了

mysql中drop、truncate與delete的區別是什么

演示2:TRUNCATE TABLE,不能回滾數據操作

mysql中drop、truncate與delete的區別是什么

SET autocommit = FALSE;

mysql中drop、truncate與delete的區別是什么

TRUNCATE TABLE myemp3;

mysql中drop、truncate與delete的區別是什么

清空了數據

mysql中drop、truncate與delete的區別是什么

回滾事物

rollback

mysql中drop、truncate與delete的區別是什么

查詢后數據并沒有恢復

mysql中drop、truncate與delete的區別是什么

4.效率對比

在速度上,一般來說,drop> truncate > delete。

  • 如果想刪除部分數據用delete,注意帶上where子句,回滾段要足夠大;如果想刪除表,當然用drop;

  • 如果想保留表而將所有數據刪除,如果和事務無關(不能回滾),用truncate即可;

  • 如果和事務有關,或者想觸發trigger,還是用delete;

  • 如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據。

  • truncate與drop是DDL語句,執行后無法回滾;delete是DML語句,可回滾。

  • truncate只能作用于表;delete,drop可作用于表、視圖等。

  • truncate會清空表中的所有行,但表結構及其約束、索引等保持不變;drop會刪除表的結構及其所依賴的約束、索引等。

  • truncate會重置表的自增值;delete不會。

  • truncate不會激活與表有關的刪除觸發器;delete可以。

  • truncate后會使表和索引所占用的空間會恢復到初始大小;delete操作不會減少表或索引所占用的空間,drop語句將表所占用的空間全釋放掉。

“mysql中drop、truncate與delete的區別是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃园市| 西城区| 福安市| 玉溪市| 罗平县| 张家港市| 滁州市| 冀州市| 民丰县| 登封市| 贵德县| 湖南省| 乌海市| 潍坊市| 建平县| 曲松县| 洪洞县| 吉安市| 上蔡县| 钟山县| 柳州市| 遂溪县| 张家界市| 布拖县| 蓝山县| 淮南市| 怀远县| 新疆| 瑞丽市| 新兴县| 彩票| 洛隆县| 信宜市| 平乡县| 綦江县| 黎川县| 建水县| 汪清县| 新安县| 色达县| 苏尼特左旗|