一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - mysql中drop、truncate與delete的區別詳析

mysql中drop、truncate與delete的區別詳析

2022-03-07 17:00兮動人 Mysql

對于drop、truncate和delete雖然簡單,但是真要使用或者面試時候問到還是需要有一定的總結,下面這篇文章主要給大家介紹了關于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區別的文章就介紹到這了,更多相關mysql drop、truncate和delete區別內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文地址:https://blog.csdn.net/qq_41684621/article/details/123248516

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免看一级a一片成人123 | 欧美5g影院 | 特级毛片全部免费播放器 | 天堂久久久久va久久久久 | 2015台湾永久免费平台 | 大香焦在线观看 | 热伊人99re久久精品最新地 | 亚洲一区二区三区不卡在线播放 | 操破苍穹在线 | 午夜在线观看视频 | 91香蕉小视频 | 久久国产精品福利影集 | 狠狠色狠狠色综合日日小蛇 | 国产a一级毛片爽爽影院 | 办公室大战秘书呻吟 | 1986葫芦兄弟全集免费观看第十集 | 欧美久久影院 | 久久99国产综合精品AV蜜桃 | 色淫影院 | 亚洲性69影视 | 国产精品第页 | 91在线精品国产丝袜超清 | 69热精品视频在线看影院 | 99久久免费精品视频 | 蜜桃影像传媒破解版 | 99久久精品国产免看国产一区 | 国产3344视频在线观看免费 | 精品国产精品国产偷麻豆 | 香蕉在线精品亚洲第一区 | 亚洲一区二区三区在线播放 | 国产日韩欧美精品在线 | 国产视频在线一区 | 久久人妻少妇嫩草AV无码 | 亚洲乱码尤物193yw在线播放 | 91久久国产视频 | 国产色拍 | 午夜成私人影院在线观看 | 四虎成人影院 | 欧美激情精品久久久久久不卡 | sao虎在线精品永久 s0e一923春菜花在线播放 | 欧美a一级片 |