20

我不想删除数据库,

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

删除数据库将需要再次创建它,以及许多设置。

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

编辑

我能做的一切都在phpMyAdmin中

4

6 回答 6

42

您正在谈论在 phpMyAdmin 中执行此操作。

我只需要这样做,我不确定您使用的是什么版本,但是在我拥有的版本中,如果您滚动到表格列表的底部,您可以单击“检查全部”,然后在它旁边的下拉菜单中有“With Selected:”,您可以选择“Drop”并清空所有表格。

于 2011-12-16T23:27:17.330 回答
7

mysqldump -u[用户名] -p[密码] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[用户名] -p[密码] [数据库]

这里有更多方法可以在不删除数据库的情况下删除所有表。

于 2010-02-03T02:48:11.073 回答
6

您还可以从 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;
于 2011-07-05T12:31:19.900 回答
3

我不知道有什么可以直接满足您的需求。您可以尝试执行以下操作:

运行它来显示你的 drop 命令:

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]
于 2010-02-03T02:53:21.247 回答
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]); 
}

它对我有用!

于 2014-02-15T08:13:23.893 回答
0

如果您的表名只有简单的名称(没有空格或其他特殊字符),则此查询可以为您构建整个 drop 命令:

select concat('drop table ', group_concat(table_name), ';') from information_schema.tables where table_schema='yourdbname';
于 2021-11-25T01:13:09.660 回答