[mysql] mysql에서 한 번에 여러 테이블 삭제

하나의 명령으로 하나의 단일 데이터베이스에서 여러 테이블을 삭제하는 방법. 같은 것,

> use test;
> drop table a,b,c;

여기서 a, b, c는 데이터베이스 테스트의 테이블입니다.



답변

예:

테이블 A에 두 개의 자식 B와 C가 있다고 가정합니다. 그러면 다음 구문을 사용하여 모든 테이블을 삭제할 수 있습니다.

DROP TABLE IF EXISTS B,C,A;

각 테이블을 개별적으로 삭제하는 대신 스크립트 시작 부분에 배치 할 수 있습니다.


답변

SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

그러면 올바른 순서로 드롭하거나 실제로 존재하는지에 대해 걱정할 필요가 없습니다.

NB 이것은 MySQL 전용입니다 (질문에서와 같이). 다른 데이터베이스에는이를 수행하는 다른 방법이있을 수 있습니다.


답변

삭제할 테이블이 많은 경우이를 수행하는 게으른 방법입니다.

  1. 아래를 사용하여 테이블 가져 오기

    • SQL 서버의 경우-SELECT CONCAT (name, ‘,’) Table_Name FROM SYS.tables;
    • 구두의 경우-SELECT CONCAT (TABLE_NAME, ‘,’) FROM SYS.ALL_TABLES;
  2. 결과 세트에서 테이블 이름을 복사하여 붙여넣고 DROP 명령 뒤에 붙여 넣으십시오.


답변

declare @sql1 nvarchar(max)
SELECT @sql1 =
  STUFF(
         (
           select ' drop table dbo.[' + name + ']'

           FROM sys.sysobjects AS sobjects
           WHERE (xtype = 'U') AND (name LIKE 'GROUP_BASE_NEW_WORK_%')
           for xml path('')
        ),
     1, 1, '')

  execute sp_executesql @sql1


답변