mysql - 截断数据库中所有表的数据

标签 mysql sql database truncate

对于某些工作,我们的需求是希望保留表和数据库结构,同时将多个表中的所有数据一次性截断。 由于 Truncate Table_name 一次只截断一个表。有没有办法截断多个表?帮助将不胜感激。

最佳答案

最简单的方法可能如下:

如果您有外键约束,则暂时将其设置为 OFF

SET FOREIGN_KEY_CHECKS=0;

再次将其设置为ON:

SET FOREIGN_KEY_CHECKS=1;


截断特定数据库下的所有表

SELECT 
CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') AS truncateCommand
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'YOUR_DATABASE_NAME_HERE';

截断所有数据库中的所有表

SELECT 
    CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') AS truncateCommand
    FROM information_schema.TABLES;

你会得到这样的输出:

TRUNCATE TABLE your_table_1;
TRUNCATE TABLE your_table_2;
TRUNCATE TABLE your_table_3;
TRUNCATE TABLE your_table_4;
TRUNCATE TABLE your_table_5;
TRUNCATE TABLE your_table_6;
TRUNCATE TABLE your_table_7;
TRUNCATE TABLE your_table_8;
.
.
etc..

现在获取这些截断命令并全部执行。

当且仅当它是一次性工作时,您可以采用这种方法来避免编写存储过程来完成它的麻烦

关于mysql - 截断数据库中所有表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35980894/

相关文章:

java - mysql替换方法加java

mysql - 有什么方法可以使用 CASE 语句加快查询速度吗?

database - smallint 或 character(10) 哪个更有效?

mysql - 试图查询 rails 数据库

MySql 5.6 ubuntu linux 无中央面板

mysql - 无法使用 MySQL Workbench 连接到 Azure MySQL 服务

mysql - SQL加入一对多关系 - 计算每张图片的票数?

database - Chrome 将其 SQLite 数据库保存到哪里?

php - SQLSTATE[22007] : Invalid datetime format: 1366 Incorrect integer value

sql - 获取 mysql 条目的列