1. 程式人生 > 資料庫 >MySQL用truncate命令快速清空一個數據庫中的所有表

MySQL用truncate命令快速清空一個數據庫中的所有表

1. 先執行select語句生成所有truncate語句

語句格式:

select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME,';') from INFORMATION_SCHEMA.TABLES where table_schema in ('資料庫1','資料庫2'); 

以名為dbname的資料庫為例,執行select語句:

mysql> select CONCAT('truncate TABLE ',';') from INFORMATION_SCHEMA.TABLES where table_schema in ('dbname'); 
+------------------------------------------------------------+ 
| CONCAT('truncate TABLE ',';') | 
+------------------------------------------------------------+ 
| 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語句前後的“|”替換為空字元

用文字編輯器(如 Notepad++)把每條truncate語句前後的“|”替換為空字元,方便後面一次複製多條執行。

替換前:

MySQL用truncate命令快速清空一個數據庫中的所有表

替換後:

MySQL用truncate命令快速清空一個數據庫中的所有表

3. 複製truncate語句到mysql命令列執行

複製truncate語句到mysql命令列執行,可以一次複製多條執行。

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

這樣就清空資料庫中所有表啦,簡單吧~

truncate與drop,delete的對比


上面說過truncate與delete,drop很相似,其實這三者還是與很大的不同的,下面簡單對比下三者的異同。

  • truncate與drop是DDL語句,執行後無法回滾;delete是DML語句,可回滾。
  • truncate只能作用於表;delete,drop可作用於表、檢視等。
  • truncate會清空表中的所有行,但表結構及其約束、索引等保持不變;drop會刪除表的結構及其所依賴的約束、索引等。
  • truncate會重置表的自增值;delete不會。
  • truncate不會啟用與表有關的刪除觸發器;delete可以。
  • truncate後會使表和索引所佔用的空間會恢復到初始大小;delete操作不會減少表或索引所佔用的空間,drop語句將表所佔用的空間全釋放掉。

到此這篇關於MySQL用truncate命令快速清空一個數據庫中的所有表 的文章就介紹到這了,更多相關MySQL truncate清空資料庫表 內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!