我们如何从数据库中删除某些特定的表。例如,我有一个包含超过20.000个表的数据库,我需要删除名称中包含一些特定字符串的数据库。那我该怎么办呢?有没有办法从数据库中获取所有表名?
答案 0 :(得分:7)
您可以从information_schema
获取包含特定名称的表格。
这是获取数据库中表格列表的方法:
select table_name from information_schema.tables;
考虑到这一点,您可以生成一个脚本来删除所需的表:
select concat('drop table ', table_name, ';')
from information_schema.tables;
然后复制该脚本并将其粘贴到SQL解释器上。
您还可以根据名称或数据库过滤表格:
select concat('drop table ', table_name, ';')
from information_schema.tables
where table_name like 'abc%'
and table_schema = 'myDatabase'; --db name
答案 1 :(得分:0)
答案 2 :(得分:0)
information_schema
视图有助于列出和过滤任何符合ANSI标准的数据库中的表:
select *
from information_schema.tables T
where T.table_name like '%FILTER HERE%'
您可以使用动态SQL和光标通过上面的记录集循环并删除相关表。