如何在MySQL中删除所有表?

24

我不想删除数据库,

因为我的网站并没有托管在自己的机器上,

删除数据库将需要重新创建,并进行许多设置。

MySQL 中是否有一个命令可以用来删除特定数据库中的所有表?

编辑

我所能做的一切都是在 phpMyAdmin 中进行的。

6个回答

46
你谈到了在phpMyAdmin中进行此操作。
我刚刚不得不这样做,我不确定您使用的是哪个版本,但在我的版本中,如果您滚动到表列表底部,您可以单击“全部选定”,然后在旁边有“已选中:”的下拉菜单中选择“删除”,它将清空所有表格。

8
这是这个问题的实际答案。 - Md Faisal
它可以工作!但我禁用了验证外键以删除所有表格! - Renan Franca

8
您还可以从information_schema数据库生成一个SQL文件:
Select concat('DROP TABLE database_name.', table_name,';') from information_schema.TABLES where table_schema='database_name';

这将会输出如下结果:
DROP TABLE database_name.table1;
DROP TABLE database_name.table2;
[...]
DROP TABLE database_name.tableN;

8

使用mysqldump -u[用户名] -p[密码] --add-drop-table --no-data [数据库名] | grep ^DROP | mysql -u[用户名] -p[密码] [数据库名] 命令可以删除所有表格而不会删除数据库。更多删除所有表格的方法可以参考这里


当我遇到以下错误时,如何在我的脚本中使用它:无法删除或更新父行:外键约束失败 - user2298943
@user2298943 使用以下命令: mysqldump -u[用户名] -p[密码] --add-drop-table --no-data [数据库名] | grep -e '^DROP \| FOREIGN_KEY_CHECKS' | mysql -u[用户名] -p[密码] [数据库名] - kiLLua

3

我不知道有什么直接的方法适合您的需求。您可以尝试以下操作:

运行此命令以显示您的删除命令:

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | 
grep ^DROP

接下来,您可以执行以下操作来实际执行删除命令:
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | 
grep ^DROP | 
mysql -u[USERNAME] -p[PASSWORD] [DATABASE]

0
$q=mysql_query("SHOW TABLES FROM ".SQL_DATABASE_NAME);

while($r=mysql_fetch_assoc($q)){
    mysql_query("DROP TABLE ".$r["Tables_in_".SQL_DATABASE_NAME]); 
}

这对我有用!


0
如果您的表名只有简单名称(没有空格或其他特殊字符),则此查询可以为您构建整个删除命令:
select concat('drop table ', group_concat(table_name), ';') from information_schema.tables where table_schema='yourdbname';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接