Saya tidak ingin mengetikkan nama semua tabel untuk menghapus semuanya. Apakah mungkin dengan satu permintaan?
sql
sql-server
Majid
sumber
sumber
Jawaban:
Gunakan tampilan INFORMATION_SCHEMA.TABLES untuk mendapatkan daftar tabel. Hasilkan skrip Drop dalam pernyataan pilih dan jatuhkan menggunakan Dynamic SQL:
Sys.Tables Version
Catatan: Jika Anda memiliki
foreign Keys
definisi di antara tabel, pertama jalankan query di bawah ini untuk menonaktifkan semua yangforeign keys
ada di database Anda.Untuk informasi lebih lanjut, periksa di sini .
sumber
[sys]
pandangan skema jika portabilitas di rdbms 'tidak diperlukan. stackoverflow.com/a/3654313/251174Print @sql
sebelumnyaexec
. Kemudian saya mengeksekusi drop statement yang dibangun secara dinamis melaluisp_executesql
Jika Anda ingin menggunakan hanya satu query SQL untuk menghapus semua tabel Anda bisa menggunakan ini:
Ini adalah Prosedur Tersimpan tersembunyi di sql server, dan akan dieksekusi untuk setiap tabel dalam database yang Anda terhubung.
Catatan: Anda mungkin perlu menjalankan kueri beberapa kali untuk menghapus semua tabel karena dependensi.
Note2: Untuk menghindari catatan pertama, sebelum menjalankan kueri, periksa dulu apakah ada kunci asing yang terkait dengan tabel apa pun. Jika ada maka cukup nonaktifkan batasan kunci asing dengan menjalankan kueri di bawah ini:
sumber
Jika Anda tidak ingin mengetik, Anda dapat membuat pernyataan dengan ini:
Kemudian salin dan tempel ke jendela SSMS baru untuk menjalankannya.
sumber
QUOTENAME
yang terlihat rapi.'DROP TABLE ' + QUOTENAME(name) + ';'
Anda juga dapat menggunakan skrip berikut untuk menghapus semuanya, termasuk yang berikut:
https://michaelreichenbach.de/how-to-drop-everything-in-a-mssql-database/
sumber
Saya hanya akan membuat perubahan kecil ke jawaban @ NoDisplayName dan digunakan
QUOTENAME()
padaTABLE_NAME
kolom dan juga termasukTABLE_SCHEMA
kolom membungkus tabel tidak dalamdbo
skema.Atau menggunakan
sys
tampilan skema (sesuai komentar @ swasheck):sumber
[sys]
pandangan skema jika portabilitas di rdbms 'tidak diperlukan. stackoverflow.com/a/3654313/251174Sebagai tindak lanjut jawaban Dave.Gugg, ini akan menjadi kode yang diperlukan seseorang untuk mendapatkan semua baris DROP TABLE di MySQL:
sumber
Cara paling sederhana adalah dengan menjatuhkan seluruh basis data dan membuatnya sekali lagi:
Itu saja.
sumber
Jika ada orang lain yang bermasalah dengan solusi jawaban terbaik (termasuk menonaktifkan kunci asing), berikut adalah solusi lain dari saya :
sumber
Tidak cukup 1 kueri, masih cukup pendek dan manis:
sumber
Gunakan skrip berikut untuk
drop
semuaconstraints
:Kemudian jalankan yang berikut untuk menjatuhkan semua tabel:
Ini bekerja untuk saya di Azure SQL Database di mana
'sp_msforeachtable'
tidak tersedia!sumber
Saya Tahu pertanyaan ini sudah sangat lama tetapi setiap kali saya membutuhkan kode ini .. omong-omong jika Anda memiliki tabel dan tampilan dan Fungsi dan PROSEDUR Anda dapat menghapus semuanya dengan Script ini .. jadi mengapa saya memposting Script ini ?? karena jika Anda menghapus semua tabel, Anda perlu menghapus semua tampilan dan jika Anda memiliki Fungsi dan PROSEDUR, Anda juga perlu menghapusnya.
Saya harap ini akan membantu seseorang
sumber