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


102

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

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

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


17
당신은 이미 자신에게 대답합니다
ajreal

아래 답변에 따르면 HeidiSQL에서 이름 (위 텍스트 상자)으로 테이블을 필터링 DROP TABLE 하고 쿼리에 쓰고 원하는 각 테이블을 두 번 클릭하여 쿼리에 이름을 추가 한 다음 F9 키를 눌러 실행할 수 있습니다. 약간의 주제에서 벗어 났지만 나는 여기에 왔습니다.
Ivan Ferrer Villa

같은 접두사를 가진 여러 테이블을 삭제하려는 사람들을 위해 DROP TABLE table_prefix_*, 별표 문자로는 작동하지 않기 때문에 : stackoverflow.com/questions/6758652/…
baptx

답변:


135

예:

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

DROP TABLE IF EXISTS B,C,A;

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


29
테이블이 전혀 관계를 가질 필요가 없다는 점을 지적하는 것이 좋습니다. 완전히 독립적 일 수 있으며이 구문은 계속 작동합니다.
crmpicco

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

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

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


3
당신은 fkey 수표 (y)를 돌려서 많은 번거 로움으로부터 저를 구했습니다.
HungryCoder

0

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

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

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


-3
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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.