Apa yang TRUNCATE
harus dilakukan dengan jatuh secara berbeda?
Saya percaya ini menghapus semua data dalam tabel tetapi menyimpan nama tabel dalam database, di mana seperti DROP
menghapus semua data dan tabel. Apakah ini benar ?
mysql
truncate
drop-table
pengguna1829823
sumber
sumber
Jawaban:
HAPUS - BAHASA MANIPULASI DATA (DML)
The
DELETE
pernyataan dalam setiap RDBMS dianggap sebagai DML pernyataan. Juga dikenal sebagai CRUD (Buat, Baca, Perbarui, Hapus), pernyataan semacam ini dimaksudkan untuk memanipulasi data dalam database tanpa mempengaruhi struktur objek yang mendasarinya. Apa artinya ini dalam istilah praktis adalah:DELETE
pernyataan dapat fine-tuned menggunakan predikat baik melaluiWHERE
atauJOIN
menghapus beberapa atau semua baris dalam sebuah tabel.DELETE
pernyataan akan dicatat oleh database dan dapat diperpanjang kembali dalam transaksi jika pernyataan gagal.DELETE
akan mengambil kunci level baris pada data yang dihapus, meskipun ini bisa meningkat lebih tinggi seperlunya.DELETE
bisa "lambat" (ini relatif), tetapi lebih aman karena berbutir halus.TRUNCATE - BAHASA DEFINISI DATA (DDL)
TRUCNATE
dianggap sebagai pernyataan DDL , artinya dimaksudkan untuk mengubah cara objek didefinisikan dalam database. Biasanya, pernyataan DDL adalahCREATE
,,ALTER
atauDROP
, tetapiTRUNCATE
melayani tujuan tertentu, yaitu untuk "mengatur ulang" sebuah tabel dengan menghapus semua baris. Metode ini berbeda antara mesin RDBMS dan saya akan merekomendasikan melihat spesifik MySQL . Implikasi praktis dari aTRUNCATE
adalah:TRUNCATE
tidak bisa berbutir halus. Jika berhasil, itu akan menghapus semua baris dari tabel Anda.TRUNCATE
biasanya tidak dicatat. Ini bervariasi menurut RDBMS dan saya sarankan Anda melihat lebih spesifik bagaimana MySQL menanganinya. (Petunjuk, ini bervariasi menurut versi.)TRUNCATE
membutuhkan kunci metadata tabel untuk dieksekusi. Bagaimana ini benar-benar diimplementasikan dapat spesifik untuk RDBMS, tetapi pada dasarnyaTRUNCATE
proses tersebut harus mencegah proses lain dari mucking dengan tabel untuk mengeksekusi DDL-nya.TRUNCATE
akan lebih cepat daripadaDELETE
, tetapi kurang aman.DROP TABLE - BAHASA DEFINISI DATA (DDL)
DROP TABLE
melangkah lebih jauh dariTRUNCATE
pada yang benar-benar menghapus tabel dari database sepenuhnya. Ini termasuk menghapus semua objek terkait, seperti indeks dan batasan. Jika Anda menjatuhkan tabel, Anda tidak hanya akan menghapus semua data, tetapi struktur juga. Ini biasanya akan dilakukan ketika meja tidak lagi dibutuhkan. Perhatian utama adalah karena aDROP
adalah DDL, Anda biasanya tidak dapat membatalkannya . Beberapa mesin RDBMS akan memungkinkan Anda untuk membungkus DDL dalam suatu transaksi sehingga Anda dapat mengembalikannya, tetapi ini tidak dianggap praktik terbaik dan harus dihindari.sumber
Meskipun saya tidak dapat berbicara untuk MySQL, berikut adalah tabel singkat yang membandingkan beberapa aspek dari truncate vs delete dalam Oracle.
Informasi yang dihimpun dari buku ini: http://amzn.com/0470395125
Semoga ini dapat membantu setiap pengguna Oracle yang tersandung di halaman ini, seperti yang saya lakukan. Silakan tunjukkan yang mana, jika ada, dari poin-poin ini berlaku di MySQL,
sumber
DROP TABLE TableName
-> hapus tabel dari database.TRUNCATE TABLE TableName
-> hapus data tabel, tanpa syarat ... dan setel ulang nilaiIDENTITY
seed, jika tabel memilikiIDENTITY
bidang.sumber
DELETE
: Perintah DML, jika Anda melakukan perintah delete, hapus satu-satunya DATA tanpa menghilangkan struktur tabel, kita dapat MENGGULIRKAN baris data dengan cara barisTRUNCATE
: Perintah DDL, jika Anda menjalankan perintah Truncate, hapus satu-satunya DATA tanpa menghilangkan struktur tabel, kami tidak dapat mengembalikan truncate data, menghapus data dalam PAGE BY PAGE dengan cara truncate lebih cepat, lalu hapus queryDROP
:, Perintah DDL, jika Anda melakukan perintah DROP itu menghapus (menghapus) data dan struktur tabel total juga kita tidak bisa mengembalikan datasumber