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.


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.


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.


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.


-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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.