MS SQL eğitimlerimize bir başka önemli konu DELETE işlemi ile devam ediyoruz.
Not: Derslerimi baştan sona takip eden arkadaşlar XENONBOX veritabanını benimle beraber oluşturdu iseniz. Aşağıda anlatacağım işlemleri kendi veri tabanınız üzerinde uygulamaya çalışamayınız hata alacaksınız. Alacağınız hatayı yazının sonunda anlattım. Bir sonraki yazımda bu hatayı nasıl giderebileceğimizi anlatacağım.
Burada sadece DELETE komutunun nasıl uygulandığına göz atıp öğrenmeniz yeterlidir.
DELETE isminden de anlaşılacağı üzere tablodaki verileri silmek için kullandığımız bir sorgudur.
Diğer sorgularımız gibi kullanımı kolaydır ama en riskli sorgu tipidir. Where şartını unuttuğunuz anda biraz yazılım jargonuyla ifade edeyim tüm tabloyu uçurabilirsiniz. Aman dikkat.
DELETE Kullanımı
DELETE FROM TABLOİSMİ
WHERE ŞARTLAR
Canlı bir örnek ile görelim.
XENONBOX veritabanında CUSTOMER tablosuna ilk olarak bir SELECT atalım. Oradan silmek için kendimize bir veri seçelim.
SELECT * FROM CUSTOMER
1 | Maria | Anders | Münih | Germany | 030-0074321 |
2 | Ana | Trujillo | Münih | Mexico | (5) 555-4729 |
3 | Antonio | Moreno | Münih | Mexico | (5) 555-3932 |
4 | Thomas | Hardy | Münih | UK | (171) 555-7788 |
5 | Christina | Berglund | Münih | Sweden | 0921-12 34 65 |
6 | Hanna | Moos | Münih | Germany | 0621-08460 |
7 | Frédérique | Citeaux | Münih | France | 88.60.15.31 |
8 | Martín | Sommer | Münih | Spain | (91) 555 22 82 |
9 | Laurence | Lebihan | Münih | France | 91.24.45.40 |
10 | Elizabeth | Lincoln | Münih | Canada | (604) 555-4729 |
Değerli Maria Hanım artık başka bir iş buldu ve firmamızdan ayrıldı. Artık veri tabanımızda çalışanlar kolonumuzda bulunmasına gerek yok o zaman silelim.
DELETE FROM CUSTOMER WHERE PHONE='030-0074321'
2 | Ana | Trujillo | Münih | Mexico | (5) 555-4729 |
3 | Antonio | Moreno | Münih | Mexico | (5) 555-3932 |
4 | Thomas | Hardy | Münih | UK | (171) 555-7788 |
5 | Christina | Berglund | Münih | Sweden | 0921-12 34 65 |
6 | Hanna | Moos | Münih | Germany | 0621-08460 |
7 | Frédérique | Citeaux | Münih | France | 88.60.15.31 |
8 | Martín | Sommer | Münih | Spain | (91) 555 22 82 |
9 | Laurence | Lebihan | Münih | France | 91.24.45.40 |
10 | Elizabeth | Lincoln | Münih | Canada | (604) 555-4729 |
Böylelikle Maria Hanım’ı şirketimizin veri tabanlarından silmiş olduk.
Dikkat: DELETE işlemini Where şartı olmadan kullanırsanız tüm tablodaki verileri temizler.
Bunu görmek için bir tablomuzdan vazgeçip sizlere bir örnek göstereceğim.
Sizler bunu uygulamayınız.
DELETE FROM CUSTOMER
Not: Delete işlemi yaparken Where şartı ile Primary Key olan alanları yazmanız veri güvenliğiniz için önemlidir. Çünkü Primary Key ile sadece hedeflediğiniz veri silinecektir. Bir örnek verelim.
Öncelikle London da yaşayan kişileri listeleyelim.
SELECT * FROM CUSTOMER WHERE City='London'
4 | Thomas | Hardy | London | UK | (171) 555-7788 |
11 | Victoria | Ashworth | London | UK | (171) 555-1212 |
16 | Elizabeth | Brown | London | UK | (171) 555-2282 |
19 | Ann | Devon | London | UK | (171) 555-0297 |
53 | Simon | Crowther | London | UK | (171) 555-7733 |
72 | Hari | Kumar | London | UK | (171) 555-1717 |
6 tane kaydımız listelendi. Şimdi biz bu listeden Thomas’ı silmek isteyelim ama bunu Primary olmayan alan CITY üzerinden yapalım bakın neler olacak.
Yaptığım bu işlem sonrasında sadece Thomas değil tüm London da kalanlar gitti.
Select attığımızda artık hiç bir verinin gelmediğini görüyoruz.
Bu konularda dikkatli olmanızı tavsiye ederim.
Bu yazımda kullanılan DELETE işlemi tabloları arasında ilişki olmayan veritabanı üzerinden çalışan DELETE sorgusuydu. Ama derslerimi başından bu yana takip eden arkadaşlarımın tabloları ilişkili tablolardı ve ilk silme işlemini denediğinizde şöyle bir hata almış olmalısınız.
Bu hatayı nasıl giderebiliriz bunu bir sonraki yazımda anlatacağım.
Görüşmek üzere.