2011-02-07 25 views
69

Cách thả nhiều bảng từ một cơ sở dữ liệu duy nhất tại một lệnh. giống như,Thả nhiều bảng trong một ảnh trong mysql

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

trong đó a, b, c là các bảng từ kiểm tra cơ sở dữ liệu.

+11

bạn đã trả lời mình – ajreal

+0

theo các câu trả lời dưới đây, trong HeidiSQL bạn có thể lọc bảng bằng tên của họ (trên hộp), viết 'DROP TABLE' vào một truy vấn và nhấp đúp chuột vào mỗi bảng mong muốn để thêm tên thành truy vấn (đặt dấu phẩy giữa chúng) rồi nhấn F9 để thực thi. Một chút off-topic nhưng tôi đến đây vì điều đó. –

Trả lời

87

Ví dụ:

Giả sử bảng A có hai con B và C. Sau đó, chúng tôi có thể sử dụng cú pháp sau để xóa tất cả các bảng.

DROP TABLE IF EXISTS B,C,A; 

Điều này có thể được đặt ở đầu tập lệnh thay vì thả riêng từng bảng.

+20

Có lẽ nó đáng để chỉ ra rằng các bảng không cần phải có bất kỳ mối quan hệ nào cả. Chúng có thể hoàn toàn độc lập và cú pháp này sẽ vẫn hoạt động. – crmpicco

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

Sau đó, bạn không phải lo lắng về việc thả chúng theo đúng thứ tự, cũng không thực sự tồn tại.

+2

Bạn đã lưu tôi từ rất nhiều rắc rối bằng cách chuyển các kiểm tra fkey (y). – HungryCoder

+0

cảm ơn người đàn ông, công việc của mình. – sradha

-2
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 
Các vấn đề liên quan