最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL刪除表三種操作及delete、truncate、drop語句的區(qū)別

 更新時間:2025年03月17日 10:41:11   作者:燃燈工作室  
文章主要介紹了MySQL中三種刪除表的操作:delete語句、truncate語句和drop語句,它們的區(qū)別在于功能、用法、執(zhí)行速度、使用場景、表和索引所占空間以及是否可回滾等方面,感興趣的朋友跟隨小編一起看看吧

本文主要講mysql中三種刪除表的操作,delete語句、truncate語句以及drop語句的區(qū)別

一.關(guān)聯(lián)與區(qū)別

1.區(qū)別

delete、truncate和drop是用于刪除數(shù)據(jù)庫中的數(shù)據(jù)或?qū)ο蟮腟QL語句,但它們有不同的功能和用法。

  • delete語句:delete語句用于從表中刪除特定的行或符合特定條件的行。delete語句是一種有條件的刪除操作,它可以通過WHERE子句指定特定的條件來選擇要刪除的行。delete語句只能刪除數(shù)據(jù)行,而不會刪除表本身或其他對象。刪除操作通??梢曰貪L,也就是能夠撤回刪除操作并恢復被刪除的數(shù)據(jù)。
  • truncate語句:truncate語句用于從表中刪除所有的行,但保留表的結(jié)構(gòu)。相比于delete,truncate是一種非??焖佟⒏咝У牟僮?,因為它不需要逐行刪除數(shù)據(jù),而是直接將表中的數(shù)據(jù)頁清空。truncate操作不會觸發(fā)事務(wù)日志,無法回滾。因此,一旦執(zhí)行truncate操作,被刪除的數(shù)據(jù)將無法恢復。
  • drop語句:drop語句用于刪除數(shù)據(jù)庫中的對象,包括表、視圖、索引等。drop語句是一種物理刪除,它會完全刪除指定的對象以及與該對象相關(guān)的所有數(shù)據(jù)和定義。drop操作是不可恢復的,因此在執(zhí)行drop操作之前需要特別小心,以防止誤操作導致數(shù)據(jù)丟失。

2.執(zhí)行速度

drop> truncate > delete

3.使用場景

在刪除數(shù)據(jù)庫中的數(shù)據(jù)時,常常會存在這樣幾種情況:

  • 已經(jīng)確定刪除整張表和數(shù)據(jù),也不需要恢復數(shù)據(jù)了,用 drop;
  • 刪除數(shù)據(jù)不刪除表,但是刪除之后還有可能會后悔,用 delete;
  • 只想刪除數(shù)據(jù),不用刪除表,刪除數(shù)據(jù)后不會后悔了,用 truncate;

4.表和索引所占空間:

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

5.總結(jié)

  • delete 語句可以使用where子句實現(xiàn)部分刪除,而truncate不可以,會將表中的整個數(shù)據(jù)全部刪除,使用時,可以按需求選擇;
  • 如果想從表中刪除所有的數(shù)據(jù),不要使用delete,可以使用truncate語句,因為這樣執(zhí)行速度更快。truncate語句實際是刪除原來的表然后重新建立一個新表;
  • 在沒有備份情況下,謹慎使用 drop 與 truncate。要刪除表結(jié)構(gòu)使用drop;.對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器。
  • delete from刪空表后,會保留一個空的頁,truncate在表中不會留有任何頁。
  • DELETE語句執(zhí)行刪除的過程是每次從表中刪除一行,并且同時將該行的刪除操作作為事務(wù)記錄在日志中保存以便進行進行回滾操作。
  • TRUNCATE TABLE 則一次性地從表中刪除所有的數(shù)據(jù)并不把單獨的刪除操作記錄記入日志保存,刪除行是不能恢復的。并且在刪除的過程中不會激活與表有關(guān)的刪除觸發(fā)器。執(zhí)行速度快。
  • 當使用行鎖執(zhí)行 DELETE 語句時,將鎖定表中各行以便刪除。truncate始終鎖定表和頁,而不是鎖定各行。
  • 如果有identity產(chǎn)生的自增id列,delete from后仍然從上次的數(shù)開始增加,即種子不變;使用truncate刪除之后,種子會恢復到初始值。
  • delete刪除內(nèi)容,不刪除表結(jié)構(gòu),可以刪除全部數(shù)據(jù),也可以刪除部分數(shù)據(jù),一行行刪除,效率較低,可以回滾。
  • truncate刪除內(nèi)容,不刪除表結(jié)構(gòu),刪除表全部數(shù)據(jù),操作生效后,自動提交,不能回滾。
  • drop既刪除表內(nèi)容,又刪除表結(jié)構(gòu),執(zhí)行速度最快。

二.用法:

一.delete

1.刪除整張表的數(shù)據(jù):

delete from table_name;

2.刪除部分數(shù)據(jù),添加where子句:

delete  from table_name where...;

3.說明

  • delete可以和where子句連用刪除指定行。
  • 屬于DML語言,每次刪除一行,都在事務(wù)日志中為所刪除的每行記錄一項。產(chǎn)生rollback,事務(wù)提交之后才生效;如果有相應的 trigger,執(zhí)行的時候?qū)⒈挥|發(fā),如果刪除大數(shù)據(jù)量的表速度會很慢。
  • 刪除表中數(shù)據(jù)而不刪除表的結(jié)構(gòu)(定義),同時也不釋放空間。
  • delete不會刪除索引 (新插入的數(shù)據(jù)將在刪除數(shù)據(jù)的索引后繼續(xù)增加);

二.truncate

1.只能操作表,將表中數(shù)據(jù)全部刪除,在功能上和不帶where子句的delete語句相同:

truncate table table_name;

2.說明

  • 默認情況下,truncate通過釋放存儲表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放。所以使用的系統(tǒng)和事務(wù)日志資源少,可以使用reuse storage; truncate會將高水線復位(回到最開始).
  • truncate是DDL語言, 操作立即生效,自動提交,原數(shù)據(jù)不放到rollback segment中,不能回滾. 操作不觸發(fā)trigger.
  • 刪除內(nèi)容、釋放空間但不刪除表的結(jié)構(gòu)(定義)。

三.drop

1.drop語句將刪除表的結(jié)構(gòu),以及被依賴的約束(constrain),觸發(fā)器(trigger),索引(index);

drop table table_name;

2.說明

  • 刪除之后,依賴于該表的存儲過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài).
  • drop也屬于DDL語言,立即執(zhí)行,執(zhí)行速度最快
  • 刪除內(nèi)容和定義,釋放空間。

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

相關(guān)文章

  • MySQL精準控制Binlog日志數(shù)量的三種方案

    MySQL精準控制Binlog日志數(shù)量的三種方案

    作為數(shù)據(jù)庫管理員,你是否經(jīng)常為服務(wù)器磁盤爆滿而抓狂?Binlog就像數(shù)據(jù)庫的“黑匣子”,默默記錄著每一次數(shù)據(jù)變動,但若放任不管,幾天內(nèi)這些日志文件就能吞噬上百GB空間!今天教你三招精準控制Binlog數(shù)量,從此告別空間焦慮,需要的朋友可以參考下
    2025-05-05
  • percona 實用工具之pt-kill使用介紹

    percona 實用工具之pt-kill使用介紹

    一個優(yōu)秀的kill MySQL連接的一個工具,是percona toolkit的一部分,在因為空閑連接較多導致超過最大連接數(shù)、某個有問題的sql導致mysql負載很高時,都需要將一些連接kill掉,這個工具主要就是這個用途
    2016-04-04
  • sql優(yōu)化之如何找到那些慢SQL

    sql優(yōu)化之如何找到那些慢SQL

    執(zhí)行SQL語句時,如果出現(xiàn)慢SQL或SQL占用系統(tǒng)內(nèi)存的情況,需進行具體查詢分析,這篇文章主要介紹了sql優(yōu)化之如何找到那些慢SQL的相關(guān)資料,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2026-05-05
  • Mysql中的觸發(fā)器簡單介紹及使用案例

    Mysql中的觸發(fā)器簡單介紹及使用案例

    觸發(fā)器可以監(jiān)聽著數(shù)據(jù)表的某個行為,一旦數(shù)據(jù)表的這個行為發(fā)生了,馬上執(zhí)行相應的sql語句,下面有個不錯的案例大家可以研究下
    2013-12-12
  • 深入理解?MySQL?索引底層原理

    深入理解?MySQL?索引底層原理

    這篇文章主要介紹了深入理解?MySQL?索引底層原理的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 監(jiān)聽mysql表內(nèi)容變化 mysql開啟binlog

    監(jiān)聽mysql表內(nèi)容變化 mysql開啟binlog

    這篇文章主要給大家介紹了關(guān)于監(jiān)聽mysql表內(nèi)容變化,mysql開啟binlog的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • MySQL的安全問題從安裝開始說起

    MySQL的安全問題從安裝開始說起

    本篇文章小編為大家介紹,關(guān)于MySQL的安全問題從安裝開始說起,有需要的朋友可以參考一下
    2013-04-04
  • MySQL制作具有千萬條測試數(shù)據(jù)的測試庫的方法

    MySQL制作具有千萬條測試數(shù)據(jù)的測試庫的方法

    這篇文章主要介紹了MySQL制作具有千萬條測試數(shù)據(jù)的測試庫的方法,幫助大家更好的理解和學習MySQL,感興趣的朋友可以了解下
    2020-11-11
  • Mysql在項目中相關(guān)使用方法指南(簡單操作數(shù)據(jù)庫)

    Mysql在項目中相關(guān)使用方法指南(簡單操作數(shù)據(jù)庫)

    作為一名編程人員,對MySQL一定不會陌生,尤其是互聯(lián)網(wǎng)行業(yè),對MySQL的使用是比較多的,下面這篇文章主要給大家介紹了關(guān)于Mysql在項目中相關(guān)使用方法的相關(guān)資料,主要是簡單操作數(shù)據(jù)庫,需要的朋友可以參考下
    2022-08-08
  • MySQL中Innodb的事務(wù)隔離級別和鎖的關(guān)系的講解教程

    MySQL中Innodb的事務(wù)隔離級別和鎖的關(guān)系的講解教程

    這篇文章主要介紹了MySQL中Innodb的事務(wù)隔離級別和鎖的關(guān)系講解教程,來自于美團技術(shù)團隊的經(jīng)驗實際經(jīng)驗分享,需要的朋友可以參考下
    2015-11-11

最新評論

台州市| 天祝| 万载县| 丹凤县| 德钦县| 儋州市| 胶南市| 夏邑县| 莒南县| 科技| 乐山市| 新化县| 苍梧县| 南木林县| 莲花县| 和田县| 永泰县| 车险| 蒲江县| 嘉兴市| 青河县| SHOW| 三都| 噶尔县| 乐昌市| 蓬莱市| 平阳县| 来凤县| 阿勒泰市| 澜沧| 岑溪市| 尖扎县| 平陆县| 绿春县| 邻水| 望奎县| 汝城县| 农安县| 格尔木市| 五大连池市| 韩城市|