MySQL에서 모든 테이블을 삭제하는 방법
이 튜토리얼은 사용자가 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;
이 접근 방식은 처음에 외래 키 검사를 비활성화했기 때문에 가능합니다. 따라서 테이블을 삭제하는 순서에 관계없이 제약 조건 오류가 발생하지 않습니다. 스크립트 후에 외래 키 검사를 다시 활성화해야합니다.
데이터베이스 비우기 및 다시 만들기
이를 가능하게하려면 테이블 외에 전체 데이터베이스를 삭제하므로 테이블과 별도로 저장된 함수, 인덱스, 역할 및 기타 설정을 기꺼이 삭제해야합니다.
이 작업이 성공적으로 실행 되려면 현재 역할에 데이터베이스에서 drop
및 create
권한이 있어야합니다.
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에서 직접 대량으로 테이블을 삭제할 수없는 이유는 관계형 데이터베이스가 관계와 제약에 크게 의존하기 때문입니다. 외래 키 검사를 명시 적으로 비활성화하지 않고 테이블을 삭제할 수있는 경우 관계, 제약 조건 및 외래 키 구성이 손상됩니다.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn