Drop All Tables
From Hashmysql
Since there exists neither DROP TABLE * nor DROP TABLE WHERE name LIKE ’something’, here are three ways to achieve the desired result:
For version 5.0+:
mysql -N -e "SELECT CONCAT('DROP TABLE ', GROUP_CONCAT(table_name), ';') FROM
information_schema.tables WHERE table_schema = 'dbName'" | mysql dbName
For any version, but requires grep:
mysqldump --add-drop-table -d dbName | grep -e "DROP TABLE" | mysql dbName
You can alter the WHERE clause of the first or the grep of the second to support whatever specifics you like, such as all the tables that have a common prefix.
And a stored procedure:
– drop tables that match a given pattern
drop procedure if exists drop_tables_like;
delimiter $
create procedure drop_tables_like(tblpattern varchar(100))
begin
declare tblcount int default 0;
declare tblname varchar(100);
declare done int default 0;
declare curs cursor for select table_name from
information_schema.tables where table_name like tblpattern
and table_schema = ‘test’;
declare continue handler for sqlstate ‘02000′ set done = 1;
open curs;
myloop: loop
fetch curs into tblname;
if done then close curs; leave myloop; end if;
set @dropstmt = concat(â€drop table `â€, tblname, “`â€);
prepare stmt from @dropstmt;
execute stmt;
deallocate prepare stmt;
set tblcount = tblcount + 1;
end loop;
select tblcount as “Tables Deletedâ€;
end $
delimiter ;