gbmin's Tech Notes

서버 구축 및 유지보수, 클라우드 컴퓨팅, 네트워크 보안, IT 분야 기술 노트. :)

Tech Notes/Mysql & MariaDB

Mysql, MariaDB - 테이블 데이터 전체 삭제

gbmin 2023. 6. 14. 15:23


MySQL이나 Mariadb를 사용할 때 DB의 테이블 데이터 전체 삭제 하거나 초기화해야 할 경우가 있다. 효과적으로 테이블을 삭제하는 방법에 대해서 정리하였다. 그리고 어떤 작업이든 백업을 해두는 게 좋다.

 

[Tech Notes/Mysql & MariaDB] - mysqldump 옵션 및 사용 방법 정리

 

mysqldump 옵션 및 사용 방법 정리

mysqldump은 MySQL 데이터베이스를 백업하기 위한 명령어 도구이다. 자주사용 하는 옵션과 사용 방법에 대한 예제 정리를 하였다. 1. 기본 사용 방법 mysqldump [옵션] [데이터베이스명] > [백업파일명.sql

gbminnote.com

 

- 목차

1. 일반적인 테이블 삭제 방법

2. DB 재생성 (DROP & CREATE)

3. 모든 테이블 한 번에 삭제하는 방법

 

 

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;