MySQL中刪除表操作實現(xiàn)有哪些區(qū)別

這篇文章給大家分享的是有關(guān)MySQL中刪除表操作實現(xiàn)有哪些區(qū)別的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

十多年的博白網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整博白建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)公司從事“博白網(wǎng)站設(shè)計”,“博白網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

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

簡介

delete

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

delete from table_name;

2、刪除部分?jǐn)?shù)據(jù),添加where子句:

delete from table_name where...;

3、說明

1)、屬于DML語言,每次刪除一行,都在事務(wù)日志中為所刪除的每行記錄一項。產(chǎn)生rollback,事務(wù)提交之后才生效;如果有相應(yīng)的 trigger,執(zhí)行的時候?qū)⒈挥|發(fā),如果刪除大數(shù)據(jù)量的表速度會很慢。
2)、刪除表中數(shù)據(jù)而不刪除表的結(jié)構(gòu)(定義),同時也不釋放空間。

truncate

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

truncate table table_name;

2、說明

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

drop

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

drop table table_name;

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

區(qū)別

1、表和索引所占空間:
當(dāng)表被TRUNCATE 后,這個表和索引所占用的空間會恢復(fù)到初始大??;
DELETE操作不會減少表或索引所占用的空間;
DROP語句將表所占用的空間全釋放掉。

2、應(yīng)用范圍:
TRUNCATE 只能對table;
DELETE可以是table和view。

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

4、delete from刪空表后,會保留一個空的頁,truncate在表中不會留有任何頁。

5、DELETE語句執(zhí)行刪除的過程是每次從表中刪除一行,并且同時將該行的刪除操作作為事務(wù)記錄在日志中保存以便進(jìn)行進(jìn)行回滾操作。

TRUNCATE TABLE 則一次性地從表中刪除所有的數(shù)據(jù)并不把單獨的刪除操作記錄記入日志保存,刪除行是不能恢復(fù)的。并且在刪除的過程中不會激活與表有關(guān)的刪除觸發(fā)器。執(zhí)行速度快。

6、當(dāng)使用行鎖執(zhí)行 DELETE 語句時,將鎖定表中各行以便刪除。truncate始終鎖定表和頁,而不是鎖定各行。

7、如果有identity產(chǎn)生的自增id列,delete from后仍然從上次的數(shù)開始增加,即種子不變;

使用truncate刪除之后,種子會恢復(fù)到初始值。

總結(jié)

1、delete 語句可以使用where子句實現(xiàn)部分刪除,而truncate不可以,會將表中的整個數(shù)據(jù)全部刪除,使用時,可以按需求選擇;
2、如果想從表中刪除所有的數(shù)據(jù),不要使用delete,可以使用truncate語句,因為這樣執(zhí)行速度更快。truncate語句實際是刪除原來的表然后重新建立一個新表;
3、在沒有備份情況下,謹(jǐn)慎使用 drop 與 truncate。要刪除表結(jié)構(gòu)使用drop;
4、對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應(yīng)使用不帶 WHERE 子句的 DELETE 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器。

感謝各位的閱讀!關(guān)于“MySQL中刪除表操作實現(xiàn)有哪些區(qū)別”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

分享名稱:MySQL中刪除表操作實現(xiàn)有哪些區(qū)別
分享路徑:http://muchs.cn/article8/geeoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)定制網(wǎng)站、、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司