SQL

SQL Ders18- Truncate Delete Kullanımı

Truncate ve Delete komutlarının ikisi de bir tabloda bulunan kayıtları silmek için kullanılır. İki komutta sadece belirtilen tablodaki kayıtları siler. En belirgin farkı ise DELETE komutu ile belli bir aralığı silebilirken TRUNCATE komutu ile tablonun tamamı silinmektedir. Aralarındaki fark tabi ki bu kadar da kalmıyor. Aşağıda belirtilen maddelere bir göz atalım.

  • TRUNCATE komutu ile tablo içindeki tüm veriyi sileriz. Yani tablo sıfırlanır. DELETE komutunda kullanılan WHERE koşulu ile filtreleme yapılamaz. Identity de baştan başlar.
  • DELETE komutu ile yapılan kayıt silme işleminde her silinen kayıt Transaction Log da kayıt tutar. Bu yüzden DELETE komutunda satır satır silme işlemi uygulanır. Eğer tablolarınız büyükse ve tüm tabloyu silmek isterseniz TRUNCATE komutunu kullanınız.
  • Eğer silme yapılan tabloda identity column(otomatik artan id kolonu) varsa TRUNCATE işleminden sonra bu kolon 1 den başlar, DELETE işleminden sonra ise kaldığı yerden devam eder.
  • Eğer tablonuzda Foreign key içeren içeren sütun varsa TRUNCATE işlemi yapılamaz. Çünkü kayıtların silinmesi için trigger’lanması gerekmektedir. Eğer TRUNCATE kullanmak istiyorsak önceForeign key kaldırmalısınız.
  • Foreign key içeren tablolar DELETE ile silinmek zorundadır, ya da performanslı olmasını istiyorsanız işlemi DROP-CREATE şeklinde gerçekleştirebilirsiniz.
  • Ayrıca Trigger, Replication yada Log Shipping içeren tablolarda TRUNCATE kullanılmaz.

Truncate Kullanımı

Truncate anahtar kelimesini kullanarak hangi tabloyu silmek istersek o tablonun table anahtar kelimesinden sonra silinecek tablonun adı yazılır.

truncate table Ogrenciler

Delete Kullanımı

Eğer tablonun içindeki verilerinin hepsinin silinmesini istiyorsak ama identity kaldığı yerden devam edecek şekilde verileri silmek istiyorsak şu şekilde kullanılır.

Delete anahtar kelimesinden sonra from kelimesini getiriniz. Ardından silinecek tablonun adını yazınız. Böylece o tablonun içindeki tüm veriler silinmiş olacaktır.

DELETE FROM Ogrenciler

Eğer Ogrenciler tablosundaki OgrenciID=167 olan öğrenciyi silmek istiyorsam where koşulunu kullanmak zorundayım. Aşağıdaki örneği inceleyin.

DELETE from Ogrenciler Where OgrenciID = 167

hakkımdaki her şeyi bu blogda bulabilirsin. Haydi sende bir göz gezdirmeye ne dersin?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir