Anda tidak dapat melakukannya hanya dengan satu perintah MySQL, namun Anda dapat menggunakan MySQL untuk membuat pernyataan untuk Anda:
Di shell MySQL atau melalui PHPMyAdmin, gunakan kueri berikut
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_name LIKE 'myprefix_%';
Ini akan menghasilkan pernyataan DROP yang dapat Anda salin dan jalankan untuk menjatuhkan tabel.
EDIT: Penafian di sini - pernyataan yang dihasilkan di atas akan menjatuhkan semua tabel di semua database dengan awalan itu. Jika Anda ingin membatasinya ke database tertentu, ubah kueri agar terlihat seperti ini dan ganti database_name dengan database_name Anda sendiri:
SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' )
AS statement FROM information_schema.tables
WHERE table_schema = 'database_name' AND table_name LIKE 'myprefix_%';
[...] LIKE 'myprefix\_%';
Beberapa jawaban sebelumnya sangat bagus. Saya telah mengumpulkan ide-ide mereka dengan beberapa gagasan dari jawaban lain di web.
Saya perlu menghapus semua tabel yang dimulai dengan 'temp_' Setelah beberapa iterasi, saya menemukan blok kode ini:
Saya harap ini berguna untuk programmer MySQL / PHP lainnya.
sumber
salin hasilnya dan tempelkan ke editor teks atau keluarkan kueri ke file, gunakan beberapa pencarian dan ganti untuk menghapus pemformatan yang tidak diinginkan dan ganti
\n
dengan koma, letakkan a;
di akhir dan tambahkan tabel drop di depan.Anda akan mendapatkan sesuatu yang terlihat seperti ini:
sumber
Solusi @ andre-miller bagus tetapi ada yang lebih baik dan sedikit lebih profesional yang akan membantu Anda mengeksekusi semuanya sekaligus. Masih membutuhkan lebih dari satu perintah tetapi solusi ini akan memungkinkan Anda menggunakan SQL untuk pembuatan otomatis.
Catatan: kode ini bergantung pada platform, ini untuk MySQL tetapi yang pasti dapat diterapkan untuk Postgre, Oracle dan MS SQL dengan sedikit perubahan.
sumber
sumber
Saya berhasil menjatuhkan tabel dengan edit kueri menjadi seperti ini
sumber
Anda dapat melakukannya dalam satu perintah dengan MySQL:
Anda mungkin harus membuat daftar tabel secara dinamis dalam kode.
Pendekatan alternatif akan menggunakan perpustakaan rutin tujuan umum untuk MySQL 5.
sumber
Saya hanya ingin memposting SQL persis yang saya gunakan - itu adalah campuran dari 3 jawaban teratas:
sumber
Hanya solusi lain menggunakan GROUP_CONCAT sehingga akan mengeksekusi satu permintaan drop seperti
DROP TABLE table1, table2, ..
sumber
Saya menemukan bahwa pernyataan yang disiapkan agak sulit untuk bekerja untuk saya tetapi pengaturan
GROUP_CONCAT_MAX_LEN
itu penting ketika Anda memiliki banyak tabel. Ini menghasilkan proses tiga langkah sederhana dengan potong dan tempel dari baris perintah mysql yang berfungsi dengan baik untuk saya:Kemudian dengan hati-hati potong dan tempel pernyataan DROP panjang yang dihasilkan .
sumber
\G
alih - alih;
memberikan hasil yang sedikit lebih bersih