(9) MySQL DROP TABLE - Menghapus Tabel yang Ada

Dalam tutorial ini, kami akan menunjukkan cara untuk menghapus tabel yang ada menggunakan MySQL pernyataan DROP TABLE.
 
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:



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 , 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.

Comments