MySQL에서 모든 테이블을 삭제하는 방법

  1. 모든 테이블을 삭제하는 SQL 쿼리
  2. 데이터베이스 비우기 및 다시 만들기
  3. 삭제 된 테이블 확인

이 튜토리얼은 사용자가 MySQL의 모든 테이블을 삭제할 수있는 여러 방법을 보여주고이를 가능하게하는 샘플 스크립트를 나열합니다.

한 줄의 코드에서 모든 테이블을 완전히 삭제할 수없는 이유는 규모가 크고 잘 설계된 데이터베이스에서 많은 외래 키 제약 조건이있을 가능성이 있기 때문입니다.

모든 테이블을 삭제하는 SQL 쿼리

  • 가장 먼저해야 할 일은 테이블 삭제가 외래 키 제약 조건을 확인할 필요가 없도록 만드는 것입니다.
    SET FOREIGN_KEY_CHECKS = 0;
    
  • 그런 다음 데이터베이스 내의 모든 테이블을 쿼리하는 스크립트를 작성합니다.
    SELECT
    table_name
    FROM
    information_schema.tables
    WHERE
    table_schema = db_name;
    
  • 이후 위 질의 결과에있는 모든 테이블을 복사하여 하나씩 삭제합니다.
    DROP TABLE IF EXISTS tableOne;
    DROP TABLE IF EXISTS tableTwo;
    DROP TABLE IF EXISTS tableThree;
    DROP TABLE IF EXISTS tableEtc;
    
  • 외래 키 검사 구성을 기본값으로 재설정
    SET FOREIGN_KEY_CHECKS = 1;
    

이 접근 방식은 처음에 외래 키 검사를 비활성화했기 때문에 가능합니다. 따라서 테이블을 삭제하는 순서에 관계없이 제약 조건 오류가 발생하지 않습니다. 스크립트 후에 외래 키 검사를 다시 활성화해야합니다.

데이터베이스 비우기 및 다시 만들기

이를 가능하게하려면 테이블 외에 전체 데이터베이스를 삭제하므로 테이블과 별도로 저장된 함수, 인덱스, 역할 및 기타 설정을 기꺼이 삭제해야합니다.

이 작업이 성공적으로 실행 되려면 현재 역할에 데이터베이스에서 dropcreate권한이 있어야합니다.

DROP DATABASE database_name;

삭제 후 데이터베이스를 다시 만듭니다.

CREATE DATABASE database_name;

이 접근 방식은 모든 테이블을 삭제하는 가장 불안정한 방법입니다. 이것은 소규모 또는 실험적인 데이터베이스에만 적합합니다.

mysqldump를 사용하여 MySQL에서 테이블 삭제

mysqldump는 MySQL에서 제공하는 콘솔 명령입니다. 경로 변수에 이미 MySQL이 설정되어 있다고 가정하면 명령을 사용하여 데이터베이스 내에서 테이블을 삭제할 수 있습니다.

  • 첫 번째 단계는 콘솔에서 외래 키 검사를 비활성화하는 것입니다.
    echo "SET FOREIGN_KEY_CHECKS = 0" > ./temp.sql
    
  • mysqldump를 사용하여 데이터베이스 덤프를 진행하고 테이블 삭제
    mysqldump --add-drop-table --no-data -u rootuser -p database_name | grep 'DROP TABLE' >> ./temp.sql
    
  • 콘솔에서 외래 키 검사를 다시 활성화합니다.
    echo "SET FOREIGN_KEY_CHECKS = 1;" >> ./temp.sql
    
  • 덤프 파일을 사용하여 데이터베이스 복원
    mysql -u root -p db_name < ./temp.sql
    

콘솔 명령에 대한 지식이 있고 경로 변수에 MySQL이 설정되어 있으면 더 쉽게 작동합니다.

삭제 된 테이블 확인

모든 테이블이 실제로 삭제되었는지 확인하기 위해이 스크립트로 테이블이 여전히 출력되는지 데이터베이스를 확인할 수 있습니다.

SHOW TABLES FROM database_name;

출력이 없으면 쿼리가 성공적으로 실행되었으며 해당 특정 데이터베이스의 모든 SQL 테이블이 삭제되었음을 의미합니다.

요약하면 SQL에서 직접 대량으로 테이블을 삭제할 수없는 이유는 관계형 데이터베이스가 관계와 제약에 크게 의존하기 때문입니다. 외래 키 검사를 명시 적으로 비활성화하지 않고 테이블을 삭제할 수있는 경우 관계, 제약 조건 및 외래 키 구성이 손상됩니다.

관련 문장 - MySQL Table

  • MySQL의 여러 테이블에서 선택하는 방법