Sql Delete işlemi

Sql Delete işlemi

MS SQL’de tablolarda yer alan verileri silmek için DELETE deyimi kullanılır. Tabi DELETE deyimini kullanırken dikkatli davranmak gerekir İstenmeyen kayıplar meydana gelebilir. DELETE deyimini kullanmak aslında oldukça basittir. Basit bir DELETE deyiminin kullanımı aşağıdaki gibidir

Delete from tablo
Where koşul

Burada FROM ifadesi seçimimize bağlıdır yani istenirse kullanılmayabilir. WHERE deyimi de eğe silinecek tabloda belirli bir kurala göre silme işlemi yapılmak isteniyorsa kural belirtmek için kullanılır. Örneğin DELETE tablo adı verilerek bir tablo olduğu gibi silinebilir. Aslında tablo silinebilir dedim ancak tablo silinmez diyelim, içindeki veriler silinir. Çünkü tabloyu komple silmek için DROP kullanılır. DELETE ise bir tablo içindeki satırları silmek için kullanılır. Bu farka dikkat ediniz. Şimdi DELETE kullanımı ile alakalı bir kaç örnek yapalım

Production product tablosunun bir yedeğini oluşturup örnek için kullanalım

select * into product_yedek from Production.Product

product_yedek adında bri tablo oluşturduk ve Production.Product tablosundaki verileri ekledik.
product_yedek tablosundaki tüm verileri silelim.

delete from product_yedek

peki bu tablodaki Id’si 500 den küçük olanları silmek isteseydik.

delete from product_yedek2
where ProductID<500


şeklinde silebiliriz.

İnsert işleminde olduğu gibi delete işleminde de output komutunu kullanabiliriz.

delete top(1) from product_yedek2
output deleted.*

Truncate işlemi

Delete komutuna benzer, delete işleminden çok daha hızlı çalışır ama en büyük eksikliği herhnagi bir koşul belirtemiyor olmamızdır.

Tablodaki tüm kayıtları silmek istiyorsak truncate komutu çok daha hızlı çalışacaktır. Bunun nedeni ise delete ile silme yaptığımızda sql tüm kayıtları satır satır silecek ve tüm kayıtları transaction log dosyasına yazacaktır.
Truncate ise silme işlemlerinde transaction log dosyasına yazmadan datapagelerin bağlantısını kopararak siler
Delete ile yaptığımız silme işlemlerini geri alabilme imkanımız varken truncate ile yapılan işlemlerde herhangi bir veri kurtarma imkanı yoktur.

 truncate table product_yedek

başka bir özelliği ise truncate ile yaptığımız silmede alanlardan birinde artan değer (ID) varsa bunları da sıfırlar delete ise sıfırlamaz. Değerler korunur 

Yorum bırakın