如何在不删除数据库的情况下删除phpMyAdmin中数据库中所有表的内容?

时间:2010-03-27 15:09:54

标签: mysql phpmyadmin database-table

如何在不删除数据库中的任何表的情况下清空phpMyAdmin中数据库中所有表的内容?

由于我在开发过程中每小时都会这样做几次,所以我不想每次都在所有60多个表上单独点击“清空”。

10 个答案:

答案 0 :(得分:19)

恕我直言,最简单的解决方案是:

  • 在phpmyadmin中选择要在数据库列表中截断的数据库(左侧)
  • 在主视图中向下滚动,您会看到一个复选框“全部检查”,旁边有一个下拉框,您可以在其中选择“清空”。完成。

答案 1 :(得分:7)

创建一个包含多个DELETE语句的SQL脚本(每个表一个)并执行它。

进入phpMyAdmin并选择所需的数据库。选择SQL选项卡并将SQL脚本粘贴到窗口中。点击Go。

请看这里:

Drop all tables from a MySQL Database without deletion

答案 2 :(得分:4)

我们实际上可以通过phpMyAdmin截断所有表数据!

在phpMyAdmin中,您可以按照以下步骤执行此操作:

1)选择你的数据库并以这种方式进行导出操作:

选择自定义导出方法

  • 选择'转储表 - >格式特定选项中的数据
  • 在“对象创建选项”中选择“添加DROP TABLE ...语句”。

通过这一步,phpMyAdmin帮助我们创建一个包含所有表的完整列表的SQL脚本

3)执行导入操作,通过此脚本逐个删除和创建每个空白表

enter image description here

答案 3 :(得分:3)

你可以从这个查询开始

SELECT T.*
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE'

迭代这些结果,构建一个动态SQL字符串,调整为'DELETE FROM'+ T.Table_Name

答案 4 :(得分:2)

不幸的是,没有TRUNCATE DATABASE或等价物。话虽如此,您可能会使用某种存储过程来遍历数据库中的所有表并截断它们。 I found something of that kind here,但我不知道它是否有效。 (您也应该阅读评论讨论)

答案 5 :(得分:2)

TRUNCATE TABLE语句将完全清空表(MySql 3.23及更高版本)。

您可以创建可以为特定数据库重用的脚本。 它不是通用的,但每次你想要从一个新的数据库开始时,你就不会创建新的数据库+登录。

以下是如何自己创建脚本: 在您的webbrowser中,转到phpMyAdmin并选择数据库。单击SQL选项卡并执行'SHOW TABLES'。 选择适合打印机的格式并将内容复制到文本编辑器。

现在,对于每个表名,您可以采用以下格式重写它:

TRUNCATE TABLE <tablename>;

注意:如果您有许多表

,则可以使用正则表达式

答案 6 :(得分:1)

drop procedure if exists truncate_tables;

delimiter #
create procedure truncate_tables()
begin
 declare tab_name varchar(64);
 declare done tinyint unsigned default 0;

 declare table_cur cursor for select t.table_name
 from 
  information_schema.schemata s
  inner join information_schema.tables t on s.schema_name = t.table_schema
 where
   s.schema_name = database() and t.table_type = 'BASE TABLE';

 declare continue handler for not found set done = 1;

 open table_cur;
 repeat
   fetch table_cur into tab_name;
   set @cmd = concat('truncate table ', tab_name);

   prepare stmt from @cmd;
   execute stmt;
 until done end repeat;

 close table_cur;
end #

答案 7 :(得分:1)

您可以像这样导出表结构:

mysqldump -u root -p --no-data mydb > backup_info.sql

然后删除整个数据库,重新创建它并从备份中恢复。

足以编写整个脚本。

答案 8 :(得分:1)

您可以轻松删除phpmyadmin功能中的所有数据。也许这个功能在2010年这个问题发布时并不存在,但我觉得所有初学者都可以参考这个。

Delete all data from database

答案 9 :(得分:0)

实际上,更深入地写了这个:

SET @command:='';
SELECT @command:=CONCAT(@command, 'TRUNCATE TABLE ',T.TABLE_NAME,';')
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE' AND T.table_schema='YOUR_TABLE_SCHEMA';
PREPARE bye_world FROM @command;
EXECUTE bye_world;
DEALLOCATE PREPARE bye_world;

它从提供的模式YOUR_TABLE_SCHEMA中选择所有表名,并将它们放入@command用户变量中,为每个变量形成一个查询:TRUNCATE TABLE TABLE_NAME;

然后我只准备选定的语句并执行它。请注意,您必须在查询之前声明用户变量,否则它将是0并弄乱我们的声明。

Tutorial

  

使用MySQL DROP TABLE删除现有表