Rumah > pangkalan data > tutorial mysql > TRUNCATE lwn. DELETE dalam SQL: Apakah Perbezaan Utama?

TRUNCATE lwn. DELETE dalam SQL: Apakah Perbezaan Utama?

Linda Hamilton
Lepaskan: 2025-01-15 09:17:44
asal
149 orang telah melayarinya

TRUNCATE vs. DELETE in SQL: What are the Key Differences?

Pemahaman mendalam tentang perbezaan antara TRUNCATE dan DELETE dalam SQL

Arahan TRUNCATE dan DELETE dalam SQL digunakan untuk memadamkan data dalam jadual, tetapi kaedahnya berbeza biasanya menyediakan cara pemadaman data yang lebih cepat dan teliti.

Jenis Penyata

Tidak seperti DELETE iaitu DML (Bahasa Manipulasi Data), TRUNCATE tergolong dalam DDL (Bahasa Definisi Data).

Komited dan tarik balik

Keupayaan rollback arahan berbeza mengikut pangkalan data:

  • SQL Server dan PostgreSQL: Kedua-duanya membenarkan pemulangan semula TRUNCATE.
  • Oracle: TRUNCATE sebagai operasi DDL melibatkan dua komit, menjadikannya tidak dapat dipulihkan. Walau bagaimanapun, ciri Kilas Balik Oracle boleh mengurangkan sebahagian masalah ini.

Kitar Semula Angkasa Lepas

DELETE meninggalkan ruang kosong, manakala TRUNCATE menuntutnya semula. Pilihan REUSE STORAGE Oracle membolehkan segmen data dipelihara, meningkatkan kecekapan semasa memuat semula jadual.

Julat baris

DELETE membenarkan pemadaman terpilih bagi baris, manakala TRUNCATE memadamkan semua baris tanpa syarat. Oracle membenarkan pemotongan partition tertentu dalam jadual partition.

Jenis Objek

DELETE berfungsi pada jadual dan jadual berkelompok, tetapi TRUNCATE terhad kepada jadual atau keseluruhan kelompok (khusus Oracle).

Pengecam objek data

Dalam Oracle, DELETE mengekalkan ID objek data, manakala TRUNCATE memberikan ID baharu melainkan tiada operasi sisipan telah berlaku sejak jadual dibuat.

Kilas Balik (Oracle)

DELETE menyokong ciri Flashback, tetapi TRUNCATE menyekatnya melainkan ciri FLASHBACK ARCHIVE digunakan.

Kebenaran

Kebenaran PADAM boleh diberikan kepada pengguna, tetapi TRUNCATE memerlukan kebenaran DROP ANY TABLE (khusus Oracle).

Nota Prestasi

  • Buat Semula/Buat Asal: DELETE menjana banyak data buat asal, manakala TRUNCATE mengambil ruang yang boleh diabaikan.
  • Indeks: TRUNCATE memulihkan indeks yang dilumpuhkan (khusus Oracle).
  • Kunci Asing: Jika kunci asing merujuk kepada jadual, TRUNCATE adalah dilarang dan kelakuan DELETE bergantung pada konfigurasi.
  • Penguncian meja: TRUNCATE memerlukan kunci eksklusif (khusus Oracle), manakala DELETE lebih suka kunci kongsi.

Pencetus dan Pelaksanaan Jauh

TRUNCATE menyokong pencetus DDL (khusus Oracle). Oracle tidak membenarkan pelaksanaan TRUNCATE jauh.

Lajur identiti

Dalam Pelayan SQL, TRUNCATE menetapkan semula jujukan lajur identiti, tetapi DELETE tidak.

Set keputusan

Dalam Oracle PL/SQL, pernyataan DELETE boleh mengembalikan baris yang dipadamkan kepada klien.

Atas ialah kandungan terperinci TRUNCATE lwn. DELETE dalam SQL: Apakah Perbezaan Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan