Disyorkan, 2024

Pilihan Editor

Perbezaan antara DELETE dan TRUNCATE di SQL

DELETE dan TRUNCATE adalah arahan yang digunakan untuk menghapuskan tupel dari hubungan, tetapi ia berbeza dalam banyak konteks. Dalam SQL, arahan DELETE adalah perintah Bahasa Manipulasi Data sedangkan perintah TRUNCATE adalah arahan Bahasa Definisi Data . Walau bagaimanapun, titik yang membolehkan kita membezakan antara DELETE dan TRUNCATE ialah DELETE dapat menghapus tuple tertentu daripada hubungan, sedangkan, arahan TRUNCATE menghapuskan keseluruhan tupel dari hubungan.

kita tidak perlu berhenti di sini, terdapat banyak perbezaan lain antara DELETE dan TRUNCATE. Marilah kita membincangkannya dengan bantuan carta perbandingan yang ditunjukkan di bawah.

Carta Perbandingan

Asas untuk PembandinganDELETETRUNCATE
AsasAnda boleh menentukan tuple yang anda mahu padamkan.Ia memadam semua tuple dari hubungan.
BahasaDELETE adalah perintah Bahasa Manipulasi Data.TRUNCATE adalah arahan Bahasa Definisi Data.
WHEREPerintah DELETE boleh mempunyai klausa WHERE.Perintah TRUNCATE tidak mempunyai klausa WHERE.
PencetusPerintah DELETE mengaktifkan pemicu yang digunakan di atas meja dan menyebabkannya terbakar.Perintah TRUNCATE tidak mengaktifkan pemicu api.
PemadamanPerintah DELETE menghapuskan tuple satu demi satu.TRUNCATE memadam keseluruhan halaman data yang mengandungi tuple.
KunciPerintah DELETE mengunci baris / tuple sebelum memadamkannya.LUKARAN halaman data kunci perintah TRUNCATE sebelum memadam data jadual.
KelajuanPerintah DELETE bertindak lebih lambat berbanding TRUNCATE.TRUNCATE lebih cepat berbanding DELETE.
TransaksiDELETE rekod log transaksi untuk setiap tuple yang dipadamkan.Log transaksi rekod TRUNCATE untuk setiap halaman data yang dihapuskan.
PulihkanPerintah DELETE boleh diikuti sama ada oleh COMMIT atau ROLLBACK.Perintah TRUNCATE tidak boleh ROLLBACK.

Definisi DELETE

DELETE adalah arahan Bahasa Manipulasi Data (DML). Tugas arahan DELETE adalah memadam atau mengeluarkan tuple dari jadual atau hubungan. Dengan menggunakan DELETE, kita dapat menghapuskan keseluruhan tuple, dengan semua nilai atributnya daripada hubungan. DELETE tidak mengeluarkan nilai atribut tertentu, tuple dari hubungannya.

Anda boleh menapis tuple yang anda mahu padamkan dari jadual, menggunakan klausa WHERE . Sekiranya anda menyatakan klausa WHERE dalam pernyataan DELETE, maka hanya akan memadamkan tuple yang memenuhi syarat klausa WHERE. Tetapi jika anda tidak menentukan klausa WHERE dalam pernyataan DELETE maka secara lalai ia memadam atau menghapuskan semua tuple dari suatu hubungan. Klausa WHERE dalam pernyataan DELETE boleh mengandungi terbitan SELECT-FROM-WHERE bersarang.

Sintaks arahan DELETE adalah seperti berikut:

DELETE FROM table_name WHERE [ conditon ];

Perintah DELETE hanya beroperasi pada hubungan tunggal atau jadual pada satu masa. Sekiranya anda ingin memadamkan tupel dari hubungan yang berbeza, anda perlu meletakkan arahan DELETE yang berbeza untuk setiap satu. Tetapi menghapus tuple dari satu hubungan boleh melanggar integriti rujukan pangkalan data, yang dapat diselesaikan dengan bantuan pencetus. Jika arahan DELETE melanggar integriti rujukan, maka semua pencetus rujukan (jika dinyatakan) akan diaktifkan yang menyebarkan tindakan memadam pada tupel hubungan yang berbeza yang merujuk kepada tuple yang dipadam.

Perintah DELETE terlebih dahulu mengunci baris atau tuple untuk dipadamkan dan kemudian padamkan tuple satu demi satu . Oleh itu, ia memerlukan lebih banyak kunci dan sumber yang menjadikannya lebih perlahan . Anda boleh membuat perubahan yang dilakukan oleh pernyataan DELETE secara kekal menggunakan COMMIT, atau anda boleh menetapkan semula pangkalan data menggunakan ROLLBACK .

Takrif TRUNCATE

TRUNCATE adalah sama dengan perintah DELETE kerana ia juga menghapus tuple dari hubungan. Perbezaannya adalah bahawa ia menghapus keseluruhan tupel dari hubungan. Oleh kerana arahan TRUNCATE dilaksanakan, keseluruhan data dari jadual dipadamkan, setiap tuple bersama-sama dengan semua nilai atributnya dihapuskan dari jadual. Tetapi struktur jadual masih wujud dalam pangkalan data. Jadi, anda sekali lagi boleh memasukkan tupel di dalam jadual. TRUNCATE adalah arahan Bahasa Definisi Data.

Sintaks perintah TRUNCATE adalah seperti berikut:

Table_name ;

Seperti DELETE, TRUNCATE tidak beroperasi pada data jadual demi baris. Sebaliknya, ia beroperasi pada halaman data yang menyimpan data jadual. Sekarang, apabila TRUNCATE memadam halaman data ia harus memperoleh kunci pada halaman data dan bukannya tuple. Oleh itu, ia mengakibatkan kekurangan kunci dan sumber yang menjadikan TRUNCATE lebih cepat dibandingkan dengan DELETE.

Pelaksanaan arahan TRUNCATE tidak mengaktifkan apa-apa pencetus kerana ia tidak mengendalikan data secara berturut-turut. TRUNCATE tidak boleh dilaksanakan sekiranya jadual dirujuk oleh mana - mana kunci asing . Sebaik sahaja arahan TRUNCATE memadam data jadual, ia tidak akan dapat dipulihkan kembali.

Perbezaan Utama Antara DELETE dan TRUNCATE dalam SQL

  1. Perbezaan utama antara DELETE dan TRUNCATE adalah dengan menggunakan DELETE anda boleh memadam tuple tertentu daripada hubungan. Tetapi penggunaan TRUNCATE akan menghapus keseluruhan tupel dari hubungan.
  2. DELETE adalah arahan DML sedangkan, TRUNCATE adalah arahan DDL.
  3. DELETE menggunakan klausa WHERE untuk menapis rekod / tupel yang akan dipadamkan. Bagaimanapun, TRUNCATE tidak memerlukan klausa WHERE kerana ia menghapus semua tuple, jadi tidak perlu menapis tuple.
  4. DELETE mengaktifkan pencetus rujukan yang digunakan untuk jadual. Tetapi TRUNCATE tidak menyalakan pemicu di atas meja.
  5. Perintah DELETE menghilangkan tuple satu demi satu dari jadual, dalam susunan itu, diproses. Walau bagaimanapun, TRUNCATE tidak beroperasi pada tuple satu demi satu. Sebaliknya, TRUNCATE beroperasi pada halaman data yang menyimpan data jadual.
  6. DELETE memperoleh kunci pada tuple sebelum memadamkannya, TRUNCATE memperoleh kunci pada halaman data sebelum memadam halaman data.
  7. TRUNCATE lebih cepat berbanding arahan DELETE.
  8. LAKUKAN log transaksi rekod untuk setiap tuple sedangkan, log transaksi rekod TRUNCATE untuk setiap halaman data.
  9. Sebaik sahaja anda memadamkan data menggunakan TRUNCATE, ia tidak akan dapat dipulihkan kembali sedangkan, anda boleh memulihkan kembali data yang telah anda hapus menggunakan perintah DELETE.

Kesimpulan:

Jika anda ingin menyesuaikan pemadaman rekod dari jadual maka anda boleh menggunakan arahan DELETE. Sekiranya anda ingin mengosongkan jadual iaitu anda tidak mahu meninggalkan sebarang data dalam jadual kemudian gunakan arahan TRUNCATE.

Top