欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql中drop、truncate與delete的區(qū)別詳析

 更新時間:2022年03月07日 11:54:37   作者:兮動人  
對于drop、truncate和delete雖然簡單,但是真要使用或者面試時候問到還是需要有一定的總結(jié),下面這篇文章主要給大家介紹了關(guān)于mysql中drop、truncate與delete區(qū)別的相關(guān)資料,需要的朋友可以參考下

1. drop:刪除數(shù)據(jù)庫

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

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

DROP DATABASE mytest1;

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

DROP DATABASE IF EXISTS mytest1;	

2. 對比 TRUNCATE TABLE 和 DELETE FROM

相同點:都可以實現(xiàn)對表中所有數(shù)據(jù)的刪除,同時保留表結(jié)構(gòu)。

不同點:

  • TRUNCATE TABLE:一旦執(zhí)行此操作,表數(shù)據(jù)全部清除。同時,數(shù)據(jù)是不可以回滾的。
  • DELETE FROM:一旦執(zhí)行此操作,表數(shù)據(jù)可以全部清除(不帶WHERE)。同時,數(shù)據(jù)是可以實現(xiàn)回滾的。

3. DDL 和 DML 的說明

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

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

演示1:DELETE FROM 刪除數(shù)據(jù)后,恢復(fù)數(shù)據(jù)

SET autocommit = FALSE;

DELETE FROM myemp3;

查詢后數(shù)據(jù)為空

回滾數(shù)據(jù)

再次查詢,可以看到恢復(fù)數(shù)據(jù)了

演示2:TRUNCATE TABLE,不能回滾數(shù)據(jù)操作

SET autocommit = FALSE;

TRUNCATE TABLE myemp3;

清空了數(shù)據(jù)

回滾事物

rollback

查詢后數(shù)據(jù)并沒有恢復(fù)

4.效率對比

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

  • 如果想刪除部分?jǐn)?shù)據(jù)用delete,注意帶上where子句,回滾段要足夠大;如果想刪除表,當(dāng)然用drop;
  • 如果想保留表而將所有數(shù)據(jù)刪除,如果和事務(wù)無關(guān)(不能回滾),用truncate即可;
  • 如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete;
  • 如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入/插入數(shù)據(jù)。
  • truncate與drop是DDL語句,執(zhí)行后無法回滾;delete是DML語句,可回滾。
  • truncate只能作用于表;delete,drop可作用于表、視圖等。
  • truncate會清空表中的所有行,但表結(jié)構(gòu)及其約束、索引等保持不變;drop會刪除表的結(jié)構(gòu)及其所依賴的約束、索引等。
  • truncate會重置表的自增值;delete不會。
  • truncate不會激活與表有關(guān)的刪除觸發(fā)器;delete可以。
  • truncate后會使表和索引所占用的空間會恢復(fù)到初始大??;delete操作不會減少表或索引所占用的空間,drop語句將表所占用的空間全釋放掉。

總結(jié)

到此這篇關(guān)于mysql中drop、truncate與delete區(qū)別的文章就介紹到這了,更多相關(guān)mysql drop、truncate和delete區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中建表與常見的類型設(shè)計陷阱詳解

    MySQL中建表與常見的類型設(shè)計陷阱詳解

    這篇文章詳細(xì)講解了MySQL的建表語句、以及表結(jié)構(gòu)的設(shè)計規(guī)范和陷阱,并對網(wǎng)絡(luò)上常見的資料給出的設(shè)計方案。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11
  • mysql enum字段類型的謹(jǐn)慎使用

    mysql enum字段類型的謹(jǐn)慎使用

    本文主要介紹了mysql enum字段類型使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 使用distinct在mysql中查詢多條不重復(fù)記錄值的解決辦法

    使用distinct在mysql中查詢多條不重復(fù)記錄值的解決辦法

    使用distinct在mysql中查詢多條不重復(fù)記錄值的解決辦法...
    2006-12-12
  • MySQL5.x版本亂碼問題解決方案

    MySQL5.x版本亂碼問題解決方案

    這篇文章主要介紹了MySQL5.x版本亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • MySQL如何統(tǒng)計一個數(shù)據(jù)庫所有表的數(shù)據(jù)量

    MySQL如何統(tǒng)計一個數(shù)據(jù)庫所有表的數(shù)據(jù)量

    最近在做統(tǒng)計想查找一個數(shù)據(jù)庫里基本所有的表數(shù)據(jù)量,下面這篇文章主要給大家介紹了關(guān)于MySQL如何統(tǒng)計一個數(shù)據(jù)庫所有表的數(shù)據(jù)量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Mysql中正則表達(dá)式Regexp常見用法及說明

    Mysql中正則表達(dá)式Regexp常見用法及說明

    這篇文章主要介紹了Mysql中正則表達(dá)式Regexp常見用法及說明,具有很好的參考價值,希望對大家有所幫助。
    2022-12-12
  • MySQL導(dǎo)出ER圖為圖片或PDF的操作方法

    MySQL導(dǎo)出ER圖為圖片或PDF的操作方法

    這篇文章主要介紹了MySQL導(dǎo)出ER圖為圖片或PDF的操作方法,文章通過圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • MySQL CPU過高的排查方法

    MySQL CPU過高的排查方法

    這篇文章主要介紹了MySQL CPU過高的排查方法,通過top命令查看服務(wù)器CPU資源使用情況,明確CPU占用率較高的是否是mysqld進(jìn)程,文章通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • mysql學(xué)習(xí)筆記之基礎(chǔ)知識

    mysql學(xué)習(xí)筆記之基礎(chǔ)知識

    本文是MySQL學(xué)習(xí)筆記系列文章的第一篇,給大家簡單講解下MySQL的一些檢查操作命令,希望大家能夠喜歡
    2017-02-02
  • mysql主從復(fù)制讀寫分離的配置方法詳解

    mysql主從復(fù)制讀寫分離的配置方法詳解

    一般來說mysql都是通過 主從復(fù)制(Master-Slave)的方式來同步數(shù)據(jù),再通過讀寫分離(MySQL-Proxy)來提升數(shù)據(jù)庫的并發(fā)負(fù)載能力 這樣的方案來進(jìn)行部署與實施的。
    2018-04-04

最新評論