[英]Dropping all schemas with no tables
我想删除所有带有零个表的数据库,但是我能够使用SELECT table_schema, count(table_name) FROM information_schema.tables group by table_schema
来获得带有表的数据库,但是如何删除不在此列表中的数据库。 我无法手动完成,因为那里有500多个db。
要了解没有表的架构,可以尝试以下操作:
SELECT * FROM information_schema.schemata S
WHERE NOT EXISTS
(SELECT 'TABLE' from information_schema.tables T
WHERE T.table_schema = S.schema_name)
因为在系统表SCHEMATA
您将找到服务器的所有模式,而在表TABLES
中将找到所有模式中的所有表
上层查询必须在游标上输入,因此您必须使用准备好的语句来执行游标,因为DROP DATABASE
有一个变量(您的schema_table),并且只能使用准备好的语句来运行
使用@dnoeth在注释中发布的方法,对查询稍有不同,以获取drop命令,然后使用某些Notepad ++魔术执行它们以删除所有空数据库
SELECT concat('drop database ',schema_name) FROM information_schema.schemata
WHERE schema_name NOT IN
(SELECT TABLE_SCHEMA FROM information_schema.tables)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.