亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

MYSQL中Truncate的用法詳解

瀏覽:113日期:2023-10-06 17:16:54

本文導(dǎo)讀:刪除表中的數(shù)據(jù)的方法有delete,truncate, 其中TRUNCATE TABLE用于刪除表中的所有行,而不記錄單個(gè)行刪除操作。TRUNCATE TABLE 與沒有 WHERE 子句的 DELETE 語句類似;但是,TRUNCATE TABLE 速度更快,使用的系統(tǒng)資源和事務(wù)日志資源更少。下面介紹SQL中Truncate的用法

當(dāng)你不再需要該表時(shí), 用 drop;當(dāng)你仍要保留該表,但要?jiǎng)h除所有記錄時(shí), 用 truncate;當(dāng)你要?jiǎng)h除部分記錄時(shí)(always with a WHERE clause), 用 delete.

Truncate是一個(gè)能夠快速清空資料表內(nèi)所有資料的SQL語法。并且能針對具有自動(dòng)遞增值的字段,做計(jì)數(shù)重置歸零重新計(jì)算的作用。

一、Truncate語法

[ { database_name.[ schema_name ]. | schema_name . } ] table_name[ ; ]

參數(shù)

database_name數(shù)據(jù)庫的名稱。

schema_name表所屬架構(gòu)的名稱。

table_name要截?cái)嗟谋淼拿Q,或要?jiǎng)h除其全部行的表的名稱。

二、Truncate使用注意事項(xiàng)

1、TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統(tǒng)和事務(wù)日志資源少。

2、DELETE 語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項(xiàng)。TRUNCATE TABLE 通過釋放存儲表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放。

3、TRUNCATE TABLE 刪除表中的所有行,但表結(jié)構(gòu)及其列、約束、索引等保持不變。新行標(biāo)識所用的計(jì)數(shù)值重置為該列的種子。如果想保留標(biāo)識計(jì)數(shù)值,請改用 DELETE。如果要?jiǎng)h除表定義及其數(shù)據(jù),請使用 DROP TABLE 語句。

4、對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應(yīng)使用不帶 WHERE 子句的 DELETE 語句。由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發(fā)器。

5、TRUNCATE TABLE 不能用于參與了索引視圖的表。

6、對用TRUNCATE TABLE刪除數(shù)據(jù)的表上增加數(shù)據(jù)時(shí),要使用UPDATE STATISTICS來維護(hù)索引信息。

7、如果有ROLLBACK語句,DELETE操作將被撤銷,但TRUNCATE不會(huì)撤銷。

三、不能對以下表使用 TRUNCATE TABLE

1、由 FOREIGN KEY 約束引用的表。(您可以截?cái)嗑哂幸米陨淼耐怄I的表。)

2、參與索引視圖的表。

3、通過使用事務(wù)復(fù)制或合并復(fù)制發(fā)布的表。

4、對于具有以上一個(gè)或多個(gè)特征的表,請使用 DELETE 語句。

5、TRUNCATE TABLE 不能激活觸發(fā)器,因?yàn)樵摬僮鞑挥涗浉鱾€(gè)行刪除。

四、TRUNCATE、Drop、Delete區(qū)別

1.drop和delete只是刪除表的數(shù)據(jù)(定義),drop語句將刪除表的結(jié)構(gòu)、被依賴的約束(constrain)、觸發(fā)器 (trigger)、索引(index);依賴于該表的存儲過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài)。2.delete語句是DML語言,這個(gè)操作會(huì)放在rollback segement中,事物提交后才生效;如果有相應(yīng)的觸發(fā)器(trigger),執(zhí)行的時(shí)候?qū)⒈挥|發(fā)。truncate、drop是DDL語言,操作后即 生效,原數(shù)據(jù)不會(huì)放到rollback中,不能回滾,操作不會(huì)觸發(fā)trigger。

3.delete語句不影響表所占用的extent、高水線(high watermark)保持原位置不動(dòng)。drop語句將表所占用的空間全部釋放。truncate語句缺省情況下將空間釋放到minextents的 extent,除非使用reuse storage。truncate會(huì)將高水線復(fù)位(回到最初)。

4.效率方面:drop > truncate > delete

5.安全性:小心使用drop與truncate,尤其是在 沒有備份的時(shí)候,想刪除部分?jǐn)?shù)據(jù)可使用delete需要帶上where子句,回滾段要足夠大,想刪除表可以用drop,想保留表只是想刪除表的所有數(shù)據(jù)、 如果跟事物無關(guān)可以使用truncate,如果和事物有關(guān)、又或者想觸發(fā) trigger,還是用delete,如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導(dǎo)入、插入數(shù)據(jù)。

6.delete是DML語句,不會(huì)自動(dòng)提交。drop/truncate都是DDL語句,執(zhí)行后會(huì)自動(dòng)提交。

7、drop一般用于刪除整體性數(shù)據(jù) 如表,模式,索引,視圖,完整性限制等;delete用于刪除局部性數(shù)據(jù) 如表中的某一元組

8、DROP把表結(jié)構(gòu)都刪了;DELETE只是把數(shù)據(jù)清掉

9、當(dāng)你不再需要該表時(shí), 用 drop;當(dāng)你仍要保留該表,但要?jiǎng)h除所有記錄時(shí), 用 truncate;當(dāng)你要?jiǎng)h除部分記錄時(shí)(always with a WHERE clause), 用 delete.

到此這篇關(guān)于MYSQL中Truncate的用法詳解的文章就介紹到這了,更多相關(guān)MYSQL Truncate內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 亚洲欧美日韩高清一区二区一 | 鲁丝片一区二区三区毛片 | 任你躁在线精品视频m3u8 | 爱呦视频在线播放网址 | 亚洲欧美一区二区三区二厂 | 综合久久久久久久综合网 | 国内自拍网红在综合图区 | 亚洲一区不卡 | 大片一级| 免费在线黄网 | 日本福利视频一区 | 不卡精品国产_亚洲人成在线 | 91果冻传媒文化有限公司 | 国产日韩欧美在线观看 | 伊人激情 | 蕾丝视频www在线观看 | 日韩在线视精品在亚洲 | 综合色区 | 精品国产成人三级在线观看 | 毛片免费观看 | 午夜激情在线观看 | 三级黄色片在线免费观看 | 欧美一级黄色录相 | 日韩第四页| 成人一二 | 欧美综合国产 | 国产一毛片 | 色偷偷亚洲女人天堂观看欧 | 欧美在线免费观看 | 精品视频一区二区三区四区五区 | 亚洲精品国产成人99久久 | 中国性视频| 青青青国产色视频在线观看 | 亚洲欧洲精品成人久久曰影片 | 亚洲日韩精品欧美一区二区 | 亚洲精品国产精品乱码不97 | 国产成人久久精品激情 | 精品无码久久久久国产 | 欧洲三级 | 久久九九有精品国产56 | 久久久91精品国产一区二区 |