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

MySQL刪除表數(shù)據(jù)、清空表命令詳解(truncate、drop、delete區(qū)別)

 更新時間:2024年10月11日 08:53:31   作者:尋求出路的程序媛  
介紹了MySQL中清空或刪除表數(shù)據(jù)的三種方法:truncate、delete和drop,以及它們的特點、使用場景和注意事項,Truncate用于快速刪除表中所有數(shù)據(jù)并釋放空間,但不保留表結(jié)構(gòu);delete用于刪除表中特定行或所有數(shù)據(jù),保留表結(jié)構(gòu)且操作可回滾

一、MySQL清空表數(shù)據(jù)三種方法

1.1 清空表數(shù)據(jù):truncate

  • sql命令
#清空多張表、庫中所有表的數(shù)據(jù)
truncate table table_name1,table_name2,...;

#清空單張表的數(shù)據(jù)
truncate table table_name;

注意:

  • truncate會刪除表中的所有數(shù)據(jù)、釋放空間,但是保留表結(jié)構(gòu)
  • 只能操作表,不能與where一起使用
  • truncate刪除操作立即生效,原數(shù)據(jù)不放到rollback segment中,不能rollback,操作不觸發(fā)trigger
  • truncate刪除數(shù)據(jù)后會釋放表空間、重置Identity(標(biāo)識列、自增字段),相當(dāng)于自增列會被置為初始值,又重新從1開始記錄、而非接著原來的id數(shù)
  • truncate刪除數(shù)據(jù)后不寫服務(wù)器log,整體刪除速度快

1.2 刪除表:drop

  • sql命令
drop table table_name;
drop table if exists table_name;

注意:

  • drop會刪除整個表,包括表結(jié)構(gòu)和數(shù)據(jù),釋放空間
  • 立即執(zhí)行,執(zhí)行速度最快
  • 不可回滾

1.3 刪除/清空表數(shù)據(jù):delete

  • sql命令
#刪除部分?jǐn)?shù)據(jù)
delete from tb_name where clause;

#清空表,僅刪除數(shù)據(jù)、保留表結(jié)構(gòu),同時也不釋放表空間
delete from tb_name;

注意:

  • 刪除表中數(shù)據(jù)而不刪除表結(jié)構(gòu),也不釋放空間
  • delete可以刪除一行、多行、乃至整張表
  • 每次刪除一行,都在事務(wù)日志中為所刪除的每行記錄一項,可回滾
  • 如果不加where條件,表示刪除表中所有數(shù)據(jù),僅刪除數(shù)據(jù)、保留表結(jié)構(gòu),同時也不釋放表空間

MySQL、Mariadb、PostgreSQL刪除表數(shù)據(jù)、清空表命令 都可用以上三種命令。

二、使用原則

使用原則總結(jié)如下:

  • 當(dāng)你不需要該表時(刪除數(shù)據(jù)和結(jié)構(gòu)),用drop;
  • 當(dāng)你仍要保留該表、僅刪除所有數(shù)據(jù)表內(nèi)容時,用truncate;
  • 當(dāng)你要刪除部分記錄、且希望能回滾的話,用delete;

在沒有備份的情況下,謹(jǐn)慎使用drop、truncate。

在實際應(yīng)用中,要根據(jù)具體需求和場景選擇合適的操作。

三、truncate、drop、delete區(qū)別

truncate、delete和drop都是用于刪除數(shù)據(jù)或表的操作,但它們之間有一些關(guān)鍵的區(qū)別:

1.操作類型

  • truncate:刪除表中的所有數(shù)據(jù),保留表結(jié)構(gòu),釋放空間。它是一種DDL(數(shù)據(jù)定義語言)操作,執(zhí)行速度較快。
  • delete:刪除表中的特定行,可以逐行刪除,保留表結(jié)構(gòu),也不釋放空間。它是一種DML(數(shù)據(jù)操作語言)操作,執(zhí)行速度較慢。
  • drop:刪除整個表,包括表結(jié)構(gòu)和數(shù)據(jù),釋放空間。它是一種DDL操作,但不同于truncate,它會釋放表所占用的空間。

2.數(shù)據(jù)刪除方式

  • truncate:刪除表中的所有數(shù)據(jù),但不會刪除表結(jié)構(gòu)。適用于需要保留表結(jié)構(gòu)的情況。
  • delete:刪除表中的特定數(shù)據(jù),可以根據(jù)條件刪除,表的結(jié)構(gòu)和約束保持不變。適用于需要根據(jù)特定條件刪除數(shù)據(jù)的情況。
  • drop:刪除整個表,包括表結(jié)構(gòu)和數(shù)據(jù)。適用于不再需要表結(jié)構(gòu)的情況。

3.執(zhí)行速度:drop > truncate > delete

  • truncate:執(zhí)行速度較快,因為它一次性刪除所有數(shù)據(jù),過釋放表的存儲空間來刪除數(shù)據(jù),并將表重置為初始狀態(tài)。
  • delete:執(zhí)行速度較慢,因為它需要逐行刪除數(shù)據(jù),并且會生成大量的事務(wù)日志,同時也不釋放空間。
  • drop:執(zhí)行速度較快,因為它一次性刪除整個表。

4.回滾能力

  • truncate:不可回滾,一旦執(zhí)行,數(shù)據(jù)將被永久刪除、無法恢復(fù)。
  • delete:可以回滾,使用ROLLBACK語句可以撤銷刪除操作。
  • drop:不可回滾,一旦執(zhí)行,表結(jié)構(gòu)和數(shù)據(jù)都將被永久刪除。

5.觸發(fā)器

  • truncate:不會觸發(fā)觸發(fā)器。
  • delete:會觸發(fā)觸發(fā)器。
  • drop:不會觸發(fā)觸發(fā)器,因為它是刪除整個表。

總結(jié)

  • 如果您需要快速刪除整個表中的數(shù)據(jù),但保留表結(jié)構(gòu),可以選擇truncate。
  • 如果您需要刪除特定行的數(shù)據(jù),可以根據(jù)條件刪除,可以選擇delete。
  • 如果您需要刪除整個表,包括表結(jié)構(gòu)和數(shù)據(jù),可以選擇drop。
  • 在實際應(yīng)用中,要根據(jù)具體需求和場景選擇合適的操作。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL觸發(fā)器Trigger加載及目前局限性

    MySQL觸發(fā)器Trigger加載及目前局限性

    這篇文章主要為大家介紹了MySQL觸發(fā)器Trigger加載以及目前局限性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 關(guān)于MySQL中“Insert into select“ 的死鎖情況分析

    關(guān)于MySQL中“Insert into select“ 的死鎖情況分析

    這篇文章主要介紹了關(guān)于MySQL中“Insert into select“ 的死鎖情況分析,死鎖是指兩個或者多個事務(wù)在同一資源上的相互占用,并請求鎖定對方占用的資源,從而導(dǎo)致惡性循環(huán)的現(xiàn)象,需要的朋友可以參考下
    2023-05-05
  • 深入分析MySQL Sending data查詢慢問題

    深入分析MySQL Sending data查詢慢問題

    給大家深入分析一下MySQL Sending data表查詢慢的問題,并給出了詳細(xì)的解決方案,一起來參考下。
    2017-12-12
  • mysql創(chuàng)建刪除表的實例詳解

    mysql創(chuàng)建刪除表的實例詳解

    這篇文章主要介紹了mysql創(chuàng)建刪除表的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-10-10
  • MySQL允許遠(yuǎn)程登錄的操作實現(xiàn)

    MySQL允許遠(yuǎn)程登錄的操作實現(xiàn)

    本文主要介紹了MySQL允許遠(yuǎn)程登錄的操作實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • MySQL中查看表結(jié)構(gòu)的四種實現(xiàn)

    MySQL中查看表結(jié)構(gòu)的四種實現(xiàn)

    本文主要介紹了MySQL中查看表結(jié)構(gòu)的四種實現(xiàn),包含DESCRIBE/DESC、SHOW COLUMNS、SHOW CREATE TABLE和INFORMATION_SCHEMA,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • mysql sharding(碎片)介紹

    mysql sharding(碎片)介紹

    這篇文章主要介紹了mysql sharding(碎片)介紹,本文講解了Sharding的應(yīng)用場景一般都哪些、Sharding與數(shù)據(jù)庫分區(qū)(Partition)的區(qū)別等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • MySQL中的REPLACE?INTO語法詳解

    MySQL中的REPLACE?INTO語法詳解

    REPLACEINTO是MySQL中的一種特殊語句,用于在插入數(shù)據(jù)時檢測是否存在沖突,如果目標(biāo)表中已存在與新插入行的主鍵(PRIMARYKEY)或唯一鍵(UNIQUEKEY)沖突的記錄,則會刪除舊記錄并插入新記錄
    2025-02-02
  • CentOS系統(tǒng)中MySQL安裝完整步驟詳解

    CentOS系統(tǒng)中MySQL安裝完整步驟詳解

    在?CentOS?系統(tǒng)上安裝?MySQL,需要依次進(jìn)行環(huán)境檢查、軟件源配置、安裝?MySQL、啟動服務(wù)等操作,我將按照規(guī)范流程,為你詳細(xì)分享完整且具體的安裝步驟,感興趣的朋友一起看看吧
    2025-04-04
  • Mysql樹形結(jié)構(gòu)的數(shù)據(jù)庫表設(shè)計方案

    Mysql樹形結(jié)構(gòu)的數(shù)據(jù)庫表設(shè)計方案

    樹形結(jié)構(gòu)對大家來說應(yīng)該都不陌生,在日常開發(fā)中經(jīng)常會遇到,下面這篇文章主要給大家介紹了關(guān)于Mysql樹形結(jié)構(gòu)的數(shù)據(jù)庫表設(shè)計的相關(guān)資料,文中通過示例代碼的非常詳細(xì),需要的朋友可以參考下
    2021-09-09

最新評論