删除多个数据库中的表

时间:2017-04-25 23:44:28

标签: mysql sequelpro

有没有办法使用MYSQL跨多个数据库删除表?我正在使用Sequel Pro,但是在GUI中没有看到任何选项,所以我想知道是否有某种命令可以做到这一点?

所有数据库中的表名都是相同的,逐个删除它们非常耗时。这真的有助于清理数据库,因为我们有数百个并且它们共享相同的表。但是,不再需要某些表,需要删除它们。

希望有人可以帮助查询这样做。

1 个答案:

答案 0 :(得分:1)

您需要为每个表运行单独的DROP语句。

我们可以查询information_schema.tables来获取表格列表......

SELECT t.table_schema, t.table_name
  FROM information_schema.tables t
 WHERE t.table_name = 'tablename_i_want_to_drop'
   AND t.table_schema NOT IN ('mysql','information_schema','performance_schema') 
 ORDER BY t.table_schema, t.table_name 

我们可以使用表达式代替列......

SELECT CONCAT('DROP TABLE `',t.table_schema,'`.`',t.table_name,'` ;') AS `-- stmt` 
  FROM ...

然后我们可以获取结果集并保存它,并从脚本执行语句。 MySQL命令行客户端允许我们来源脚本......

https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html

您正在使用的客户端可能具有类似的功能,以执行脚本。或者以某种方式复制结果集并将其粘贴到查询窗口中。

在MySQL存储的程序中,我们可以运行相同的查询(获取表的列表),然后循环它们(使用CURSOR),以及PREPARE,EXECUTE和DEALLOCATE PREPARE来执行“drop table”语句。这是一个选项,但对于一次性拍摄,创建脚本会更容易。