16

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

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

4

10 回答 10

35

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

  • 在 phpmyadmin 中选择要在数据库列表中截断的数据库(左侧)
  • 在主视图中向下滚动,您会看到一个复选框“全选”,在它旁边有一个下拉框,您可以在其中选择“空”。完毕。
于 2015-09-22T06:33:11.213 回答
7

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

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

也看这里:

从 MySQL 数据库中删除所有表而不删除

于 2010-03-27T15:17:31.573 回答
4

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

在 phpMyAdmin 中,您可以按以下步骤操作:

1)选择u DB并按以下方式进行导出操作:

选择自定义导出方法

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

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

3)做导入操作,通过这个脚本一一删除和创建每个空白表

在此处输入图像描述

于 2014-02-19T06:15:19.940 回答
3

你可以从这个查询开始

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

并遍历这些结果以构建一个动态 SQL 字符串,以配合 'DELETE FROM ' + T.Table_Name

于 2010-03-27T15:19:48.230 回答
2

不幸的是,没有TRUNCATE DATABASE或等效的。话虽如此,您可能可以使用某种存储过程来遍历数据库中的所有表并截断它们。我在这里找到了类似的东西,但我不知道它是否有效。(您可能也应该阅读评论讨论)

于 2010-03-27T15:17:28.393 回答
2

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

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

以下是您自己创建脚本的方法: 在您的网络浏览器中,转到 phpMyAdmin 并选择数据库。单击 SQL 选项卡并执行'SHOW TABLES'. 选择可打印的格式并将内容复制到文本编辑器。

现在,对于每个表名,您将其重写为以下格式:

TRUNCATE TABLE <tablename>;

注意:如果您有很多表,您可以使用正则表达式

于 2011-03-07T08:49:53.673 回答
2

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

从数据库中删除所有数据

于 2018-04-24T07:06:11.930 回答
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 #
于 2010-03-27T15:45:10.267 回答
1

您只能像这样导出表结构:

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

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

很容易编写整个事情。

于 2014-02-08T17:07:21.080 回答
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混淆我们的语句。

教程

使用 MySQL DROP TABLE 删除现有表

于 2015-07-22T06:57:44.797 回答