网络编程
位置:首页>> 网络编程>> 数据库>> MySQL用truncate命令快速清空一个数据库中的所有表

MySQL用truncate命令快速清空一个数据库中的所有表

作者:iw1210  发布时间:2024-01-18 16:05:29 

标签: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 ',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语句前后的“|”替换为空字符

用文本编辑器(如 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语句将表所占用的空间全释放掉。

来源:https://blog.csdn.net/iw1210/article/details/79586033

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com