SQL’de Delete Komutu
DELETE deyimi, veritabanında bulunan bir tablodaki istenilen kayıtları silmek amacıyla kullanılan temel bir SQL deyimidir. Bu derste örnek bir tablo üzerinde DELETE deyiminin kullanımıyla ilgili bazı örnekler yapacağız.
Önceki derslerde de olduğu gibi, bu derste de aşağıdaki örnek tablomuzu kullanacağız.
tablo: personel
ID | isim | bolum | dtarihi | dyeri | maas |
---|---|---|---|---|---|
24 | Aylin Demiray | Muhasebe | 1982 | Niğde | 1100 |
42 | Mehmet Eroğlu | Bilgi İşlem | 1977 | Ankara | 1450 |
54 | Selim Kaya | Bilgi İşlem | 1965 | Konya | 1400 |
61 | Sevda Gökalp | Arşiv | 1980 | İstanbul | 1300 |
Not: Tablodaki ID alanı birincil anahtar, ID, dtarihi ve maas alanları sayısal, diğerleri metin tiptedir. Ayrıca normal şartlarda bolum ve dyeri alanlarında ilişki kurulması gerekir. Fakat burada konuyu basit tutmak amacıyla bilgiler bu şekilde kaydedilmiştir.
DELETE deyiminin formatı şu şekildedir:
DELETE FROM [tablo adı] WHERE [şartlar]
Burada önemli bir noktaya temas etmek istiyorum. DELETE deyimiyle yapılan işlemler sonucunda kayıt veya kayıtlar tamamen silinir. Örneğin; yukarıdaki tablodan ID’si 61 olan kaydı silmek istersek kayıt tamamen silinir, yani tabloda artık 3 kayıt kalır. Bir kayıttaki belli alanları silmek (temizlemek) istersek UPDATE deyimini kullanırız.
Bu formatta ilk dikkatimizi çeken şey DELETE deyiminden sonra hiçbir alan adı belirtmiyoruz. Basit bir örnekle başlayalım:
DELETE FROM personel
Bu SQL komutu herhangi bir şart aramaksızın (WHERE deyimini kullanmadık), personel tablosunda bulunan kayıtların hepsini siler. Fakat burada dikkat edilmesi gereken husus, bu işlemden sonra personel tablosu yapısını aynen korur. Yani içindeki kayıtlar silinir ama tablo yapısı, alan isimleri, veri türleri, birincil anahtar, vs. hepsi korunur. Eğer tabloyu içindeki kayıtlarla beraber tamamen silmek istersek DELETE yerine DROP TABLE komutunu kullanırız.
Başka bir örnekle devam edelim. Bu örnekte bölümü Muhasebe olan kayıtları silmek istiyoruz. Dolayısıyla komutumuz şu şekilde olacak:
DELETE FROM personel WHERE bolum='Muhasebe'
Bu komuttan sonra tablodan şartı sağlayan bir kayıt silinecek ve tablonun son hali şu şekilde olacaktır.
ID | isim | bolum | dtarihi | dyeri | maas |
---|---|---|---|---|---|
42 | Mehmet Eroğlu | Bilgi İşlem | 1977 | Ankara | 1450 |
54 | Selim Kaya | Bilgi İşlem | 1965 | Konya | 1400 |
61 | Sevda Gökalp | Arşiv | 1980 | İstanbul | 1300 |
Başka bir örnekle devam ediyoruz:
DELETE FROM personel WHERE dTarihi>1975 AND dTarihi<1985
Bu sorgunun anlamı da şudur: Personel tablosundan doğum tarihi 1975’ten büyük ve 1985’ten küçük (1975 ile 1985 yılları arasında) olan kayıtları sil. Orijinal tablomuzdaki kayıtlardan 3 tanesi bu şartı sağlıyor. Dolayısıyla 3 kayıt silincek ve geriye tek bir kayıt kalacaktır:
ID | isim | bolum | dtarihi | dyeri | maas |
---|---|---|---|---|---|
54 | Selim Kaya | Bilgi İşlem | 1965 | Konya | 1400 |
Örneklerimiz bu kadar, faydalı olması dileğiyle.