하나의 명령으로 하나의 단일 데이터베이스에서 여러 테이블을 삭제하는 방법. 같은 것,
> 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 전용입니다 (질문에서와 같이). 다른 데이터베이스에는이를 수행하는 다른 방법이있을 수 있습니다.
답변
삭제할 테이블이 많은 경우이를 수행하는 게으른 방법입니다.
-
아래를 사용하여 테이블 가져 오기
- SQL 서버의 경우-SELECT CONCAT (name, ‘,’) Table_Name FROM SYS.tables;
- 구두의 경우-SELECT CONCAT (TABLE_NAME, ‘,’) FROM SYS.ALL_TABLES;
-
결과 세트에서 테이블 이름을 복사하여 붙여넣고 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