티스토리 뷰

mysql db  를 다루게 되면 특정 문자열이 있는 table 을 지우게 되는 경우가 있습니다. 물론 tool 을 쓰거나 일일이


mysql>drop table aaa;

mysql>drop table aab;

mysql>drop table aac;


식으로 쓰거나, 아님 쉘로 만들거나, 가장 심플한 방법으론 sequel pro, phpmyadmin 같은 툴들을 이용해 일괄 삭제하는 방법을 권합니다. 그런데 가끔 그런 툴을 사용하지 못하는 경우가 존재하는데, mysql 의 스토어프로시져를 이용한 방법을 소개합니다.



SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables
 
WHERE table_schema = '[Database]' AND table_name LIKE '[SubTable]%';

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1
FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;


우리는 [Database]과 [SubTable] 을 자신의 상황에 맞는 형태로 변경해서 사용하면 되며, 주의하실 것은 Table 끼리의 의존관계, 예를들면 외래키가 존재하는 경우에 한번에 삭제가 되지 않는 경우가 있습니다. 이럴 때는 해당하는 Table 의 수동삭제나, 위 쿼리를 여러번 이용하시면 되겠습니다.


출처: http://stackoverflow.com/questions/4958424/mysql-question-on-dropping-tables/5430104#5430104