思路:
按名称前后缀生成批量删除语句。
1、生成批量删除表语句
SELECT CONCAT('drop table ', group_concat(TABLE_NAME), ';') FROM information_schema.`TABLES`
WHERE table_schema = '数据库名' AND TABLE_NAME LIKE 'spe_%'
生成语句如下:
drop table spe_a,spe_b,spe_c;
注意group_concat函数有长度限制,默认字符长度好像是1024,超过后会自动截取,所以表过多的时候最后一个表可能会被截取不全,需要修改生成的语句最后一个表名,然后执行。然后再生成再修改再执行,如此往复到没有语句生成为止。
2、生成批量删除视图语句,视图的处理类似表
SELECT CONCAT('drop view ', group_concat(TABLE_NAME), ';') FROM information_schema.VIEWS
WHERE table_schema = '数据库名' AND TABLE_NAME LIKE 'v_abc%' ;
3、生成批量删除存储过程语句
SELECT CONCAT( 'drop procedure ', ROUTINE_NAME, ';' ) FROM information_schema.`ROUTINES`
WHERE ROUTINE_SCHEMA='数据库名' AND ROUTINE_NAME LIKE 'proc_aabbcc_%';