如何从命令行删除所有 MySQL 表?

che*_*one 29 terminal mysql command-line

通常我打开 Terminal.app 并连接到远程 MySQL 数据库。

然后我使用这个命令删除一个表:

mysql> drop table [table name];
Run Code Online (Sandbox Code Playgroud)

但我需要的是删除数据库中所有表的命令行。

如果我使用:

mysql> drop database [database name];
Run Code Online (Sandbox Code Playgroud)

我将彻底销毁数据库,我将无法再次创建表。我对吗?

Wil*_*son 29

您可以删除数据库然后立即重新创建它:

mysql> drop database [database name];
mysql> create database [database name];

或者您可以使用脚本删除数据库中的每个表。

  • @chefnelone:小心!!!删除数据库也会删除存储过程和用户​​定义的视图。 (10认同)
  • @chef - 删除所有表和删除整个数据库不会产生相同的效果。如果您仅删除表,则任何数据库范围的权限都将保留,但如果您删除/重新创建数据库则不会。 (3认同)

ken*_*orb 11

您可以尝试以下命令:

mysqldump --no-data --add-drop-table DB_NAME | grep ^DROP | mysql -v DB_NAME
Run Code Online (Sandbox Code Playgroud)

或者:

mysql --silent --skip-column-names -e "SHOW TABLES" DB_NAME | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -v DB_NAME
Run Code Online (Sandbox Code Playgroud)

DB_NAME您的数据库名称在哪里。您可以~/.my.cnf在命令中指定或添加数据库凭据(例如-uroot -proot)。

如果您的数据库用户没有删除数据库的权限,则此方法比删除和创建数据库有一些优势。