Jatuhkan beberapa tabel dalam satu kesempatan di mysql

102

Cara menjatuhkan beberapa tabel dari satu database pada satu perintah. sesuatu seperti,

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

dimana a, b, c adalah tabel hasil pengujian database.

Krunal
sumber
17
Anda sudah menjawab sendiri
ajreal
menurut jawaban di bawah ini, di HeidiSQL Anda dapat memfilter tabel berdasarkan namanya (kotak teks atas), menulis DROP TABLE ke dalam kueri dan klik dua kali setiap tabel yang diinginkan untuk menambahkan namanya ke kueri (beri tanda koma di antara mereka) lalu tekan F9 untuk mengeksekusi. Agak di luar topik tapi saya datang ke sini untuk itu.
Ivan Ferrer Villa
Untuk orang yang ingin membuang beberapa tabel dengan awalan yang sama, karena DROP TABLE table_prefix_*tidak berfungsi dengan karakter bintang: stackoverflow.com/questions/6758652/…
baptx

Jawaban:

135

Contoh:

Misalkan tabel A memiliki dua anak B dan C. Kemudian kita dapat menggunakan sintaks berikut untuk menghapus semua tabel.

DROP TABLE IF EXISTS B,C,A;

Ini dapat ditempatkan di awal skrip alih-alih menjatuhkan setiap tabel satu per satu.

Leniel Maccaferri
sumber
29
Mungkin perlu ditunjukkan bahwa tabel tidak perlu memiliki hubungan sama sekali. Mereka dapat sepenuhnya independen dan sintaks ini akan tetap berfungsi.
crmpicco
76
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

Maka Anda tidak perlu khawatir tentang menjatuhkannya dalam urutan yang benar, atau apakah mereka benar-benar ada.

NB ini hanya untuk MySQL (seperti dalam pertanyaan). Basis data lain kemungkinan memiliki metode berbeda untuk melakukan ini.

OrangeDog
sumber
3
Anda telah menyelamatkan saya dari banyak kerumitan dengan mematikan pemeriksaan fkey (y).
HungryCoder
0

Cara malas untuk melakukan ini jika ada banyak tabel yang akan dihapus.

  1. Dapatkan tabel menggunakan di bawah ini

    • Untuk sql server - PILIH CONCAT (name, ',') Table_Name FROM SYS.tables;
    • Untuk lisan - PILIH CONCAT (TABLE_NAME, ',') FROM SYS.ALL_TABLES;
  2. Salin dan tempel nama tabel dari kumpulan hasil dan tempelkan setelah perintah DROP.

Javaughn Jackson
sumber
-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
pengguna4774666
sumber