MySQL DROP sintaks pernyataan TABLE
Untuk menghapus tabel yang ada, Anda menggunakan MySQL
DROP TABLE
pernyataan. Sintaks dari DROP TABLE
adalah sebagai berikut:DROP [ TEMPORARY ] TABLE [ IF EXISTS ] table_name [ , table_name ] . . . [ RESTRICT | CASCADE ]
The
DROP TABLE
pernyataan menghapus tabel dan data secara permanen dari database. Dalam MySQL, Anda juga dapat menghapus beberapa tabel menggunakan satu DROP TABLE
pernyataan, setiap tabel dipisahkan oleh koma (,).The
TEMPORARY
bendera memungkinkan Anda untuk menghapus tabel sementara saja. Hal ini sangat nyaman untuk memastikan bahwa Anda tidak sengaja menghapus tabel non-sementara.The
IF EXISTS
Selain memungkinkan Anda untuk menyembunyikan pesan kesalahan dalam kasus satu atau lebih tabel dalam daftar tidak ada. Bila Anda menggunakan IF EXISTS
Selain itu, MySQL menghasilkan CATATAN, yang dapat diambil dengan menggunakan SHOW WARNING
pernyataan. Hal ini penting untuk melihat bahwa DROP TABLE
pernyataan menghapus semua tabel yang ada dan mengeluarkan pesan kesalahan atau CATATAN ketika Anda memiliki meja tidak ada dalam daftar.Seperti disebutkan di atas,
DROP TABLE
pernyataan hanya menghapus tabel dan data. Namun, itu tidak menghapus hak pengguna tertentu yang terkait dengan meja. Oleh karena itu jika sebuah meja dengan nama yang sama diciptakan kembali setelah itu, hak-hak istimewa yang ada akan berlaku untuk tabel baru, yang dapat menimbulkan risiko keamanan. The
RESTRICT
dan CASCADE
bendera yang disediakan untuk versi masa depan MySQL. Last but not least, Anda harus memiliki hak DROP untuk tabel yang ingin Anda hapus.
MySQL DROP TABLE contoh
Kami akan menghapus
tasks
tabel yang kita buat di tutorial sebelumnya pada membuat tabel menggunakan pernyataan CREATE TABLE . Selain itu, kami juga menghapus tabel tidak ada untuk berlatih dengan SHOW WARNING
pernyataan. Pernyataan untuk menghapus tabel tugas dan meja tidak ada adalah sebagai berikut:DROP TABLE IF EXISTS tasks , nonexistent_table ;
Jika Anda memeriksa database, Anda akan melihat bahwa
tasks
tabel telah dihapus. Anda dapat memeriksa CATATAN, yang dihasilkan oleh MySQL karena meja tidak ada, dengan menggunakan SHOW WARNING
pernyataan sebagai berikut:SHOW WARNINGS ;
MySQL DROP TABLE seperti
Gambar Anda memiliki banyak tabel yang namanya dimulai dengan
test
dalam database Anda dan Anda ingin menghemat waktu dengan menghapus semua dari mereka menggunakan satu DROP TABLE
pernyataan. Sayangnya, MySQL tidak menyediakan DROP TABLE laporan SEPERTI yang dapat menghapus tabel berdasarkan pencocokan pola seperti berikut: DROP TABLE LIKE '%pattern%'
Namun, ada beberapa workarounds. Kami akan membahas salah satu dari mereka di sini untuk referensi Anda.
Mari kita mulai menciptakan tes * meja demi demonstrasi.
CREATE TABLE IF NOT EXISTS test1 ( id int ( 11 ) NOT NULL AUTO_INCREMENT , PRIMARY KEY ( id ) ) ; CREATE TABLE IF NOT EXISTS test2 LIKE test1 ; CREATE TABLE IF NOT EXISTS test3 LIKE test1 ; CREATE TABLE IF NOT EXISTS test4 LIKE test1 ;
Kami telah membuat empat meja bernama test1 , test2 , test3 dan test4 dengan struktur tabel yang sama.
Misalkan Anda ingin menghapus semua test* tabel pada suatu waktu, Anda dapat mengikuti langkah-langkah berikut:
Pertama, Anda menyatakan dua variabel yang menerima skema database dan pola yang Anda ingin tabel untuk mencocokkan:
-- set table schema and pattern matching for tables SET @ schema = 'classicmodels' ; SET @pattern = 'test%' ;
Berikutnya, Anda perlu membangun dinamis DROP TABLE pernyataan:
-- build dynamic sql (DROP TABLE tbl1, tbl2...;) SELECT CONCAT ( 'DROP TABLE ' , GROUP_CONCAT ( CONCAT ( @ schema , '.' , table_name ) ) , ';' ) INTO @ droplike FROM information_schema . tables WHERE @ schema = database ( ) AND table_name LIKE @ pattern ;
johanandyagasiblogspotcom Pada dasarnya, query menginstruksikan MySQL untuk pergi ke information_schema meja , Yang berisi data pada semua tabel di semua database, dan untuk menggabungkan semua tabel dalam database @schema ( classicmodels ) yang cocok dengan pola @pattern ( test% ) dengan awalan DROP TABLE . The GROUP_CONCAT fungsi menciptakan daftar dipisahkan koma tabel.
Kemudian, kita bisa menampilkan SQL dinamis untuk memverifikasi jika bekerja dengan benar:
-- display the dynamic sql statement SELECT @ droplike ;
Anda dapat melihat bahwa itu bekerja seperti yang diharapkan.
Setelah itu, Anda dapat mengeksekusi pernyataan menggunakan pernyataan yang sudah disiapkan di MySQL sebagai berikut:
-- execute dynamic sql PREPARE stmt FROM @ dropcmd ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
Untuk informasi lebih lanjut tentang MySQL pernyataan siap, check it out MySQL disiapkan pernyataan tutorial.
Menempatkan itu semua bersama-sama.
-- set table schema and pattern matching for tables SET @ schema = 'classicmodels' ; SET @ pattern = 'test%' ; -- build dynamic sql (DROP TABLE tbl1, tbl2...;) SELECT CONCAT ( 'DROP TABLE ' , GROUP_CONCAT ( CONCAT ( @ schema , '.' , table_name ) ) , ';' ) INTO @ droplike FROM information_schema . tables WHERE @ schema = database ( ) AND table_name LIKE @ pattern ; -- display the dynamic sql statement SELECT @ droplike ; -- execute dynamic sql PREPARE stmt FROM @ dropcmd ; EXECUTE stmt ; DEALLOCATE PREPARE stmt ;
Jadi jika Anda ingin menjatuhkan beberapa tabel yang memiliki pola tertentu dalam database, Anda hanya menggunakan script di atas untuk menghemat waktu. Yang perlu Anda lakukan adalah mengganti pola dan skema database di @pattern dan @schema variabel. Jika Anda sering harus berurusan dengan tugas ini, Anda dapat selalu mengembangkan prosedur yang tersimpan berdasarkan script dan menggunakan kembali prosedur yang tersimpan di masa depan.
Dalam tutorial ini johanandyagasiblogspotcom , kami telah menunjukkan Anda bagaimana menggunakan pernyataan DROP TABLE untuk menghapus tabel yang ada di database tertentu. Kami juga membahas tentang solusi yang memungkinkan Anda untuk menggunakan pernyataan DROP TABLE untuk menghapus tabel berdasarkan pencocokan pola.
0 Komentar untuk " (9) MySQL DROP TABLE - Menghapus Tabel yang Ada "