반응형
MySQL이나 Mariadb를 사용할 때 DB의 테이블 데이터 전체 삭제 하거나 초기화해야 할 경우가 있다. 효과적으로 테이블을 삭제하는 방법에 대해서 정리하였다. 그리고 어떤 작업이든 백업을 해두는 게 좋다.
[ 목차]
1. 일반적인 테이블 삭제 방법
테이블 단위로 삭제하는 방법인데 테이블 개수가 많다면 너무 비효율적이다.
DROP TABLE table1, table2, table3;
2. DB 재생성 (DROP & CREATE)
극단 적인 방법이지만 깔끔하다. 하지만 DROP & CREATE 권한이 없는 일반 유저라면 불가능한 방법이다.
DROP DATABASE DBNAME; -- DBNAME 을 데이터베이스 이름으로 입력
CREATE DATABASE DBNAME; -- DBNAME 을 데이터베이스 이름으로 입력
3. 모든 테이블 한 번에 삭제하는 방법
MySQL에서 특정 데이터베이스의 모든 테이블을 한 번에 삭제하는 다른 효과적인 방법이다. information_schema.tables에서 테이블 이름을 가져와 GROUP_CONCAT 함수를 사용하여 쉼표로 구분된 문자열을 만든 후 이 문자열을 DROP TABLE 명령에 연결하여 모든 테이블을 삭제하는 명령을 생성한다. 마지막으로, 이 명령을 PREPARE와 EXECUTE를 사용하여 실행한다. DBNAME 부분을 삭제하려는 데이터베이스의 이름으로 수정하여 사용하면 된다.
-- 모든 테이블 삭제
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = 'DBNAME'; -- DBNAME 을 데이터베이스 이름으로 입력
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;