截断mysql数据库中所有表

zkure5ic  于 2023-02-28  发布在  Mysql
关注(0)|答案(7)|浏览(138)

有可能截断mysql数据库中所有表吗?这是什么查询。

1u4esq0p

1u4esq0p1#

从@巴勃罗继续管道连接对我来说并不适用-我希望将其限制为单个数据库,然后仅限制为表

SELECT CONCAT('truncate table ',table_name,';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '<<YOUR-DB-NAME>>'
AND TABLE_TYPE = 'BASE TABLE';
fhg3lkii

fhg3lkii2#

您可以执行以下查询:

select 'truncate table ' || table_name || ';' 
  from INFORMATION_SCHEMA.TABLES;

然后将结果保存到脚本并运行它。
其它可能性可以是,
1.运行查询
1.将结果复制到剪贴板(COPY)
1.将结果粘贴到MySQL命令解释器(PASTE)
好的。
如果你只是运行查询,你会明白我想说的。

vs91vp4v

vs91vp4v3#

您可以简单地选择所有表,然后选择truncate all。

o2g1uqev

o2g1uqev4#

无法使用单个sql查询。

cbwuti44

cbwuti445#

在这里,我给您留下一个存储过程,用于将数据库重置为cero

CREATE DEFINER=`root`@`localhost` PROCEDURE `reset_database`(DB_NAME VARCHAR(100))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE tableName VARCHAR(100);
DECLARE cur CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE table_schema = DB_NAME AND table_type = 'BASE TABLE';
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur;

SET FOREIGN_KEY_CHECKS = 0;
read_loop: LOOP
FETCH cur INTO tableName;
  IF done THEN LEAVE read_loop; END IF;
  SET @s = CONCAT('truncate table ',tableName);
  PREPARE stmt1 FROM @s;
  EXECUTE stmt1;
  DEALLOCATE PREPARE stmt1;
END LOOP;
SET FOREIGN_KEY_CHECKS = 1;

CLOSE cur;
END;
cbjzeqam

cbjzeqam6#

可能会出现由于外键约束而导致截断失败的情况。如果您仍然希望强制截断,则可以按照Cristiana佩雷拉的建议选择所有表进行截断。
然后,在下面的窗口中单击“ReviewSQL”,而不是单击“Truncate”。
1.复制对话框中的所有查询,然后将其关闭。
1.点击“创建一个新的SQL选项卡来执行查询”。
1.粘贴这两行之间的所有查询并执行。
设置外键检查= 0;
设置外键检查= 1;

lvmkulzt

lvmkulzt7#

在phpMyAdmin中进入“结构”面板。你会看到你的数据库表的列表。在表下面选中选项“全部选中”来选择所有表。然后在组合框“选择:“中选择“空”。phpMyAdmin会问你“你真的想执行下面的查询吗?"。在回答是之前,取消选中选项“启用外键检查”。

相关问题