溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在MySQL數(shù)據(jù)庫(kù)中使用truncate命令實(shí)現(xiàn)清空數(shù)據(jù)庫(kù)中的所有表

發(fā)布時(shí)間:2020-11-12 15:05:32 來(lái)源:億速云 閱讀:531 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

MySQL數(shù)據(jù)庫(kù)中使用truncate命令實(shí)現(xiàn)清空數(shù)據(jù)庫(kù)中的所有表?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

1. 先執(zhí)行select語(yǔ)句生成所有truncate語(yǔ)句

語(yǔ)句格式:

select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABLES where table_schema in ('數(shù)據(jù)庫(kù)1','數(shù)據(jù)庫(kù)2'); 

以名為dbname的數(shù)據(jù)庫(kù)為例,執(zhí)行select語(yǔ)句:

mysql> select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABLES where table_schema in ('dbname'); 
+------------------------------------------------------------+ 
| CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') | 
+------------------------------------------------------------+ 
| truncate TABLE dbname.ABOUTUSINFO;       | 
| truncate TABLE dbname.ABUTMENT;        | 
| truncate TABLE dbname.ABUTMENTFILE;       | 
| truncate TABLE dbname.ACHVORG;        | 
| truncate TABLE dbname.WORKFLOWNODE;       | 
| truncate TABLE dbname.ZONESERVICE;       | 
| truncate TABLE dbname.ZONESERVICEFILE;      | 
+------------------------------------------------------------+ 
7 rows in set 

mysql> 

2. 把每條truncate語(yǔ)句前后的“|”替換為空字符

用文本編輯器(如 Notepad++)把每條truncate語(yǔ)句前后的“|”替換為空字符,方便后面一次復(fù)制多條執(zhí)行。

替換前: 

在MySQL數(shù)據(jù)庫(kù)中使用truncate命令實(shí)現(xiàn)清空數(shù)據(jù)庫(kù)中的所有表

替換后: 

 在MySQL數(shù)據(jù)庫(kù)中使用truncate命令實(shí)現(xiàn)清空數(shù)據(jù)庫(kù)中的所有表

3. 復(fù)制truncate語(yǔ)句到mysql命令行執(zhí)行

復(fù)制truncate語(yǔ)句到mysql命令行執(zhí)行,可以一次復(fù)制多條執(zhí)行。

mysql> truncate TABLE dbname.ZONESERVICE;  
Query OK, 0 rows affected 
mysql> 

這樣就清空數(shù)據(jù)庫(kù)中所有表啦,簡(jiǎn)單吧~

truncate與drop,delete的對(duì)比

上面說(shuō)過(guò)truncate與delete,drop很相似,其實(shí)這三者還是與很大的不同的,下面簡(jiǎn)單對(duì)比下三者的異同。

  • truncate與drop是DDL語(yǔ)句,執(zhí)行后無(wú)法回滾;delete是DML語(yǔ)句,可回滾。
  • truncate只能作用于表;delete,drop可作用于表、視圖等。
  • truncate會(huì)清空表中的所有行,但表結(jié)構(gòu)及其約束、索引等保持不變;drop會(huì)刪除表的結(jié)構(gòu)及其所依賴的約束、索引等。
  • truncate會(huì)重置表的自增值;delete不會(huì)。
  • truncate不會(huì)激活與表有關(guān)的刪除觸發(fā)器;delete可以。
  • truncate后會(huì)使表和索引所占用的空間會(huì)恢復(fù)到初始大小;delete操作不會(huì)減少表或索引所占用的空間,drop語(yǔ)句將表所占用的空間全釋放掉。

看完上述內(nèi)容,你們掌握在MySQL數(shù)據(jù)庫(kù)中使用truncate命令實(shí)現(xiàn)清空數(shù)據(jù)庫(kù)中的所有表的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI