Direkomendasikan, 2024

Pilihan Editor

Perbedaan antara HAPUS dan TRUNCATE dalam SQL

DELETE dan TRUNCATE adalah perintah yang digunakan untuk menghapus tupel dari suatu relasi, tetapi mereka berbeda dalam banyak konteks. Dalam SQL, perintah DELETE adalah perintah Bahasa Manipulasi Data, sedangkan perintah TRUNCATE adalah perintah Bahasa Definisi Data . Namun, titik yang memungkinkan kita untuk membedakan antara DELETE dan TRUNCATE adalah bahwa DELETE dapat menghapus tupel tertentu dari suatu relasi, Sedangkan perintah TRUNCATE menghapus seluruh tupel dari suatu relasi.

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 perbandinganMENGHAPUSMEMOTONG
DasarAnda dapat menentukan tuple yang ingin Anda hapus.Ini menghapus semua tupel dari suatu relasi.
BahasaDELETE adalah perintah Bahasa Manipulasi Data.TRUNCATE adalah perintah Bahasa Definisi Data.
DIMANAPerintah DELETE dapat memiliki klausa WHERE.Perintah TRUNCATE tidak memiliki klausa WHERE.
PelatukPerintah DELETE mengaktifkan pelatuk yang diterapkan di atas meja dan menyebabkannya menyala.Perintah TRUNCATE tidak mengaktifkan pemicu untuk diaktifkan.
PenghapusanPerintah DELETE menghilangkan tupel satu per satu.TRUNCATE hapus seluruh halaman data yang berisi tuple.
MengunciPerintah DELETE mengunci baris / tuple sebelum menghapusnya.TRUNCATE halaman data kunci perintah sebelum menghapus data tabel.
KecepatanPerintah DELETE bertindak lebih lambat dibandingkan dengan TRUNCATE.TRUNCATE lebih cepat dibandingkan dengan HAPUS.
TransaksiDELETE mencatat log transaksi untuk setiap tupel yang dihapus.TRUNCATE catat log transaksi untuk setiap halaman data yang dihapus.
MengembalikanPerintah 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

  1. 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.
  2. DELETE adalah perintah DML sedangkan, TRUNCATE adalah perintah DDL.
  3. 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.
  4. DELETE mengaktifkan pemicu referensial yang diterapkan pada tabel. Tapi TRUNCATE tidak memicu pemicu apa pun di atas meja.
  5. 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.
  6. DELETE mendapatkan kunci pada tuple sebelum menghapusnya sedangkan, TRUNCATE mendapatkan kunci pada halaman data sebelum menghapus halaman data.
  7. TRUNCATE lebih cepat dibandingkan dengan perintah DELETE.
  8. HAPUS mencatat log transaksi untuk setiap tuple sedangkan, TRUNCATE mencatat log transaksi untuk setiap halaman data.
  9. 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.

Top