logo

Silme ve Kesme Komutu Arasındaki Fark

DELETE ve TRUNCATE komutu arasındaki fark, röportaj sorusunun en yaygın kısmıdır. Esas olarak veritabanından veri silmek için kullanılırlar. Aralarındaki temel fark, delete ifadesinin bir tablonun kimliğini sıfırlamadan verileri silmesi, oysa truncate komutunun belirli bir tablonun kimliğini sıfırlamasıdır. . Bu makale, DELETE ve TRUNCATE komutunun genel görünümünü ve bunların öncelikli olarak birbirinin yerine kullanılan ancak tamamen farklı olan farklarını açıklamaktadır.

Sil ve Kes Komutu

DELETE komutu nedir?

Bu bir DML veya veri işleme komutu Veritabanında gerekli olmayan bir tablodaki kayıtları silmek için kullanılır. Satırın tamamını tablodan kaldırır ve silinen satırların sayısını üretir. Bu komutu yürütmek için hedef tabloda silme iznine ihtiyacımız var. Ayrıca, belirli kayıtları filtrelememize ve silmemize de olanak tanır. NEREDE tablodan bir cümle.

Bu sorguyu kullanarak silinen kayıtları kurtaramayacağımız için, bu komutu çalıştırmadan önce veritabanımızın yedeğini aldığımızı açıklığa kavuşturur. bu yüzden veritabanı yedeklemeleri gelecekte ihtiyaç duyduğumuzda verileri geri yüklememize izin verin.

Aşağıdaki sözdizimi, verileri tablodan kaldırmak için DELETE komutunu açıklamaktadır:

 DELETE FROM table_name WHERE condition; 

TRUNCATE komutu nedir?

Truncate ifadesi bir DDL veya veri tanımlama dili komutu Tablo yapısını kaldırmadan tüm verileri tablodan kaldırmak için kullanılır. kullanamıyoruz NEREDE Bu komutla tümceyi kullanabilirsiniz, böylece kayıtların filtrelenmesi mümkün olmaz. Bu komutu uyguladıktan sonra silinen veriler geri alınamıyor çünkü bu işlem yapılırken log tutulmaz.

Truncate komutu, satırlar yerine sayfalar ve işlem günlüklerindeki satırlar yerine serbest bırakma sayfaları için bir giriş yapar. Bu komut, satırlar yerine sayfaları kilitler; dolayısıyla daha az kilit ve kaynak gerektirir. Bir tabloya yabancı anahtar tarafından başvurulduğunda veya indekslenmiş bir görünüme katıldığında truncate ifadesini kullanamayacağımızı unutmayın.

kaynak tahsisi grafiği

Aşağıdaki sözdizimi, verileri tablodan kaldırmak için TRUNCATE komutunu açıklamaktadır:

 TRUNCATE TABLE table_name; 

DELETE ve TRUNCATE arasındaki temel farklar

Aşağıdaki noktalar silme ve kesme komutu arasındaki farkları açıklamaktadır:

  1. DELETE ifadesi tablodaki kayıtların bir kısmını veya tamamını kaldırmak istediğimizde kullanılırken, TRUNCATE ifadesi tablodaki satırların tamamını silecektir.
  2. DELETE, yalnızca tablo verilerini değiştirdiği için bir DML komutudur, oysa TRUNCATE bir DDL komutudur.
  3. DELETE komutu, WHERE yan tümcesini kullanarak kaydı/demetleri filtreleyebilir. Ancak TRUNCATE komutu kullanılmasına izin vermiyor NEREDE yan tümcesi olduğundan, kesme sırasında satırları filtreleyemeyiz.
  4. DELETE hepsini etkinleştirir tetikleyicileri sil Ateş etmek için masanın üzerinde. Ancak kesme işlemi tek tek satırlarda çalışmadığı için herhangi bir tetikleyici tetiklenmez.
  5. DELETE, işlenme sırasına göre tablodan satır satır silme işlemini gerçekleştirir. Ancak TRUNCATE, tablo verilerinin tamamını bir kerede sildiğinden satırlar yerine veri sayfalarında çalışır.
  6. DELETE deyimi yalnızca kayıtları siler ve kayıtları sıfırlamaz. tablonun kimliği TRUNCATE ise belirli bir tablonun kimliğini sıfırlar.
  7. DELETE komutu, silinen her satırdaki kilidi aldığı için daha fazla kilit ve veritabanı kaynağı gerektirir. Buna karşılık TRUNCATE, veri sayfasını silmeden önce veri sayfasındaki kilidi alır; dolayısıyla daha az kilit ve daha az kaynak gerektirir.
  8. DELETE deyimi bir giriş yapar işlem günlüğü silinen her satır için TRUNCATE her veri sayfası için işlem günlüğünü kaydeder.
  9. TRUNCATE komutu Daha hızlı DELETE komutundan daha iyidir çünkü satırlar yerine veri sayfalarını serbest bırakır ve işlem günlüklerindeki satırlar yerine veri sayfalarını kaydeder.
  10. TRUNCATE komutunu kullanarak kayıt silindikten sonra onu geri getiremeyiz. Bunun aksine, DELETE işlemiyle kaldırdığımız silinen verileri geri kurtarabiliriz.

DELETE ve TRUNCATE Karşılaştırma Tablosu

Aşağıdaki karşılaştırma tablosu temel farklarını hızlı bir şekilde açıklamaktadır:

Karşılaştırma Temeli SİLMEK KES
Tanım Silme ifadesi, belirtilen koşula bağlı olarak mevcut bir tablodan tek veya birden fazla kaydı kaldırmak için kullanılır. truncate komutu tüm verileri mevcut bir tablodan kaldırır ancak tablonun kendisini kaldırmaz. Tablo yapısını veya şemasını korur.
Dil Bu bir DML (Veri İşleme Dili) komutudur. Bir DDL (Veri Tanımlama Dili) komutudur.
NEREDE Tablodaki belirli bir satırı veya veriyi filtrelemek için WHERE yan tümcesini kullanabilir. Tablodaki kayıtları filtrelemek için WHERE yan tümcesini kullanmaz.
İzin Bu komutu kullanabilmek için DELETE iznine sahip olmamız gerekmektedir. Bu komutu kullanabilmek için ALTER iznine ihtiyacımız var.
Çalışma Bu komut kayıtları tek tek siler. Bu komut, kayıtları içeren veri sayfasının tamamını siler.
Kilit Silmeden önce satırı kilitleyecektir. Silinmeden önce veri sayfasını kilitleyecektir.
Tablo Kimliği Bu komut yalnızca verileri sildiğinden tablo kimliğini sıfırlamaz. Her zaman tablo kimliğini sıfırlar.
İşlem Silinen her kayıt için işlem günlüklerini tutar. Silinen her veri sayfası için işlem günlükleri tutmaz.
Hız Günlüğü koruduğu için hızı yavaştır. Yürütülmesi hızlıdır çünkü işlem günlüklerini muhafaza etmeden tüm verileri bir kerede silmiştir.
Tetiklemek Bu komut aynı zamanda masaya uygulanan tetikleyiciyi de etkinleştirebilir ve bunların ateşlenmesine neden olabilir. Bu komut, tetiklenmek üzere masaya uygulanan tetikleyicileri etkinleştirmez.
Eski haline getirmek COMMIT veya ROLLBACK deyimini kullanarak silinen verileri geri yüklememizi sağlar. Bu komutu çalıştırdıktan sonra silinen verileri geri yükleyemiyoruz.
Dizine alınmış görünüm Dizinlenmiş görünümlerle kullanılabilir. Dizine alınmış görünümlerle kullanılamaz.
Uzay DELETE ifadesi, silinen her satır için bir günlük tuttuğundan, truncate'den daha fazla işlem alanı kaplar. TRUNCATE ifadesi, her satır yerine tüm veri sayfası için bir işlem günlüğü tuttuğundan daha az işlem alanı kaplar.

Çözüm

Bu yazımızda delete ve truncate deyimleri arasında bir karşılaştırma yaptık. Tablodan kayıtların silinmesini özelleştirmek istediğimizde DELETE komutunun kullanıldığı sonucuna vardık. Tabloda herhangi bir kayıt veya veri bırakmak istemediğimizde yani tabloyu boşaltmak istediğimizde TRUNCATE komutu kullanılır.