kita tidak boleh berhenti di sini, ada banyak perbedaan antara DELETE dan TRUNCATE. Mari kita bahas dengan bantuan grafik perbandingan yang ditunjukkan di bawah ini.
Grafik perbandingan
Dasar untuk perbandingan | MENGHAPUS | MEMOTONG |
---|---|---|
Dasar | Anda dapat menentukan tuple yang ingin Anda hapus. | Ini menghapus semua tupel dari suatu relasi. |
Bahasa | DELETE adalah perintah Bahasa Manipulasi Data. | TRUNCATE adalah perintah Bahasa Definisi Data. |
DIMANA | Perintah DELETE dapat memiliki klausa WHERE. | Perintah TRUNCATE tidak memiliki klausa WHERE. |
Pelatuk | Perintah DELETE mengaktifkan pelatuk yang diterapkan di atas meja dan menyebabkannya menyala. | Perintah TRUNCATE tidak mengaktifkan pemicu untuk diaktifkan. |
Penghapusan | Perintah DELETE menghilangkan tupel satu per satu. | TRUNCATE hapus seluruh halaman data yang berisi tuple. |
Mengunci | Perintah DELETE mengunci baris / tuple sebelum menghapusnya. | TRUNCATE halaman data kunci perintah sebelum menghapus data tabel. |
Kecepatan | Perintah DELETE bertindak lebih lambat dibandingkan dengan TRUNCATE. | TRUNCATE lebih cepat dibandingkan dengan HAPUS. |
Transaksi | DELETE mencatat log transaksi untuk setiap tupel yang dihapus. | TRUNCATE catat log transaksi untuk setiap halaman data yang dihapus. |
Mengembalikan | Perintah DELETE dapat diikuti oleh COMMIT atau ROLLBACK. | Perintah TRUNCATE tidak boleh ROLLBACK. |
Definisi DELETE
DELETE adalah perintah Data Manipulation Language (DML). Tugas perintah DELETE adalah menghapus atau menghapus tupel dari tabel atau relasi. Menggunakan DELETE, kami dapat menghilangkan seluruh tuple, dengan semua nilai atributnya dari suatu relasi. DELETE tidak menghapus nilai atribut tertentu, tuple dari relasi.
Anda bisa memfilter tupel yang ingin Anda hapus dari tabel, menggunakan klausa WHERE . Jika Anda menentukan klausa WHERE dalam pernyataan DELETE, maka itu hanya akan menghapus tuple yang memenuhi kondisi klausa WHERE. Tetapi jika Anda tidak menentukan klausa WHERE dalam pernyataan DELETE maka secara default menghapus atau menghilangkan semua tupel dari suatu relasi. Klausa WHERE dalam pernyataan DELETE dapat berisi pernyataan SELECT-FROM-WHERE yang bersarang.
Sintaks perintah DELETE adalah sebagai berikut:
HAPUS DARI table_name WHERE [ conditon ];
Perintah DELETE hanya beroperasi pada satu relasi atau tabel pada satu waktu. Jika Anda ingin menghapus tuple dari relasi yang berbeda, Anda harus menempatkan perintah DELETE yang berbeda untuk masing-masing. Tetapi menghapus tuple dari satu relasi dapat melanggar integritas referensial dari database, yang dapat diselesaikan dengan bantuan pemicu. Jika perintah DELETE melanggar integritas referensial, maka semua pemicu referensial (jika ditentukan) diaktifkan yang menyebarkan tindakan penghapusan pada tupel relasi berbeda yang merujuk pada tupel yang dihapus.
Perintah DELETE pertama-tama mengunci baris atau tuple yang akan dihapus dan kemudian menghapus tuple satu per satu . Oleh karena itu, diperlukan lebih banyak kunci dan sumber daya yang membuatnya lebih lambat . Anda dapat membuat perubahan yang dilakukan oleh DELETE pernyataan permanen menggunakan COMMIT, atau Anda dapat mengatur ulang database menggunakan ROLLBACK .
Definisi TRUNCATE
TRUNCATE mirip dengan perintah DELETE karena ia juga menghapus tupel dari suatu relasi. Perbedaannya adalah ia menghapus seluruh tupel dari suatu relasi. Ketika perintah TRUNCATE dijalankan, seluruh data dari tabel dihapus, masing-masing tuple bersama dengan semua nilai atributnya dihilangkan dari tabel. Tetapi struktur tabel masih ada dalam database. Jadi, Anda dapat kembali memasukkan tupel di tabel. TRUNCATE adalah perintah Bahasa Definisi Data.
Sintaks perintah TRUNCATE adalah sebagai berikut:
TRUNCATE TABLE table_name ;
Seperti HAPUS, TRUNCATE tidak beroperasi pada data tabel baris demi baris. Sebaliknya, ini beroperasi pada halaman data yang menyimpan data tabel. Sekarang, ketika TRUNCATE menghapus halaman data, ia harus mendapatkan kunci pada halaman data, bukan tupel. Oleh karena itu, ini menghasilkan lebih sedikit persyaratan kunci dan sumber daya yang membuat TRUNCATE lebih cepat dibandingkan dengan DELETE.
Eksekusi perintah TRUNCATE tidak mengaktifkan pemicu apa pun karena tidak mengoperasikan data baris demi baris. TRUNCATE tidak dapat dijalankan jika tabel direferensikan dengan kunci asing apa pun. Setelah perintah TRUNCATE menghapus data tabel, itu tidak akan pernah bisa dipulihkan kembali.
Perbedaan utama antara HAPUS dan TRUNCATE dalam SQL
- Perbedaan utama antara DELETE dan TRUNCATE adalah menggunakan DELETE Anda dapat menghapus tuple yang ditentukan dari suatu relasi. Tetapi penggunaan TRUNCATE akan menghapus seluruh tupel dari suatu relasi.
- DELETE adalah perintah DML sedangkan, TRUNCATE adalah perintah DDL.
- HAPUS menggunakan klausa WHERE untuk memfilter catatan / tupel yang akan dihapus. Namun, TRUNCATE tidak mensyaratkan klausa WHERE karena menghapus semua tupel, jadi tidak perlu menyaring tupel.
- DELETE mengaktifkan pemicu referensial yang diterapkan pada tabel. Tapi TRUNCATE tidak memicu pemicu apa pun di atas meja.
- Perintah DELETE menghilangkan tupel satu per satu dari tabel, dalam urutan, mereka diproses. Namun, TRUNCATE tidak beroperasi pada tupel satu per satu. Sebagai gantinya, TRUNCATE beroperasi pada halaman data yang menyimpan data tabel.
- DELETE mendapatkan kunci pada tuple sebelum menghapusnya sedangkan, TRUNCATE mendapatkan kunci pada halaman data sebelum menghapus halaman data.
- TRUNCATE lebih cepat dibandingkan dengan perintah DELETE.
- HAPUS mencatat log transaksi untuk setiap tuple sedangkan, TRUNCATE mencatat log transaksi untuk setiap halaman data.
- Setelah Anda menghapus data menggunakan TRUNCATE, itu tidak pernah dapat dipulihkan kembali sedangkan, Anda dapat memulihkan kembali data yang Anda hapus menggunakan perintah DELETE.
Kesimpulan:
Jika Anda ingin menyesuaikan penghapusan catatan dari tabel maka Anda bisa menggunakan perintah DELETE. Jika Anda ingin mengosongkan tabel yaitu Anda tidak ingin meninggalkan data dalam tabel kemudian gunakan perintah TRUNCATE.