VERİTABANI SORGULARI İÇİNDEKİLER Select İfadesi Insert İfadesi Update İfadesi Delete İfadesi Verileri Sıralamak Verileri Gruplandırmak Veriler Üzerinde Arama Yapmak NESNE TABANLI PROGRAMLAMA I Uzm. Orhan ÇELİKER HEDEFLER Bu üniteyi çalıştıktan sonra; Veritabanı sorgularını kullanabilecek, Veritabanındaki tablolara yeni kayıt ekleyebilecek, Tablo içerisinden belli şartlara göre verileri seçebilecek, Tablodaki kayıtları güncelleyebilecek ve silebilecek, Verileri sıralayabilecek ve gruplandırabileceksiniz. ÜNİTE 14
GİRİŞ Veritabanı tasarımı yapılıp tablo, alan ve ilişkiler oluşturularak veritabanı kullanıma hazır hâle gelir. Veritabanı üzerinde tablo oluşturma, sorgulama, veri girme, silme veya güncelleme gibi işlemler yapısal sorgulama dili olan SQL ile gerçekleştirilmektedir. SQL ile hazırlanan sorgular kullanılarak veritabanındaki veriler üzerinde tüm işlemler yapılabilir. Sorgu, fiziksel olarak içerisinde bilgi barındırmayan ancak tablolar içerisindeki verilerden sadece istenen alanlardaki bilgileri belirli bir şarta göre görüntülemek için kullanılır. Aslında sorgular, tablo içerisindeki veriler üzerinde gruplama, hesaplama veya özetleme gibi işlemleri yapmak için kullanılan çok güçlü araçlardır. Sorgu her çalıştırıldığında verileri yeniden görüntülediğinden tablodaki değişiklikler sorgulara otomatik olarak yansır. Bu bölümde; veri listeleme, ekleme, silme, güncelleme işlemlerini gerçekleştiren select, insert, delete, update gibi SQL ifadeleri kullanılarak veritabanındaki bir tablodan veri elde eden sorgular ele alınacaktır. SELECT İfadesi Bir tablo içerisindeki verilerin tamamının veya belli şartlara göre bir kısmının listelenmesini sağlayan SQL ifadesidir. Select ifadesinin genel kullanımı aşağıdaki gibidir: SELECT Alan1, Alan2, Alan3 FROM Tablo_Adı Örneğin bir veritabanında bulunan Personel adlı tablodaki kayıtları tüm alanlarıyla birlikte listeleyelim. Resim 14.1. Select İfadesiyle Tüm Alanların Listelenmesi Atatürk Üniversitesi Açıköğretim Fakültesi 2
Örnekte kullanılan ifade Personel tablosundaki tüm alanların listelenmesini sağlar. Ancak bazı durumlarda sadece bazı alanların listelenmesi istenir. Bunun için örnekteki * karakteri yerine listelenmesi istenen alan isimleri yazılır. Örnekte tabloda bulunan alanlardan sadece Ad, Soyad, Adres alanlarının listelenmesi istenmiştir (Resim 14.2). Resim 14.2. Select İfadesiyle İstenen Alanların Listelenmesi Veri listeleme işlemlerinde sadece gerekli alanların seçilmesi performansı oldukça artırır. * karakteri kullanılarak bir tablodaki tüm alanların seçilmesi yerine sadece gerekli alanların seçilerek listelenmesi sorguların daha hızlı çalışmasını sağlar. SQL Server Management Studio da yazılan birkaç sorgu aynı anda çalıştırılıp sorgu sonuçları listelenebilir (Resim 14.3). 3 farklı sorgu ifadesi 1. sorgu sonucu 2. sorgu sonucu 3. sorgu sonucu Resim 14.3. Aynı Anda Birden Fazla Sorgu Sonucunun Listelenmesi Atatürk Üniversitesi Açıköğretim Fakültesi 3
INSERT İfadesi Bir tablo içerisine yeni bir kayıt eklemek için kullanılır. Insert ifadesi yazılırken ilk olarak tablo adı belirtilir. Sonra içerisine yeni değer eklenecek alan isimleri aralarına, karakteri konularak yazılır ve ardından VALUES ifadesi kullanılarak parantez içerisinde yeni değerler yazılır. Insert ifadesinin genel kullanımı aşağıdaki gibidir: INSERT INTO Tablo_Adı (Alan1, Alan2, Alan3 ) VALUES (Değer1, Değer2, Değer3 ) Insert ifadesini kullanarak Personel tablosuna yeni bir kayıt ekleyelim. Resim 4 ten de görüldüğü gibi örnekte personel tablosuna yeni bir kayıt eklenmiş ve tablonun son hâli Select ifadesi kullanılarak listelenmiştir. UPDATE İfadesi Resim 14.4. INSERT İfadesinin Kullanımı Bir tablo içerisinde bulunan herhangi bir kaydın güncellenmesi için kullanılır. Update ifadesinin genel kullanımı aşağıdaki gibidir: UPDATE Tablo_Adı SET Alan1 = Yeni Değer1, Alan2 = Yeni Değer2 WHERE koşul veya koşullar Update ifadesini kullanarak Personel tablosundaki Şule Pekin isimli kişinin soyismini Çelik olarak güncelleyelim. Atatürk Üniversitesi Açıköğretim Fakültesi 4
Sorgu çalıştırılmadan önce Şule isimli kaydın soyismi Pekin şeklindeydi. Update ifadesi kullanılarak Pekin değeri Çelik olarak güncellendi (Resim 14.5). DELETE İfadesi Resim 14.5. UPDATE İfadesinin Kullanımı Bir tablo içerisinde bulunan kayıtların belli koşul ya da koşullara göre silinmesi için kullanılır. Delete ifadesinin genel kullanımı aşağıdaki gibidir: DELETE FROM Tablo_Adı WHERE koşul veya koşullar Personel tablosuna Insert ifadesi kullanılarak bir kayıt eklenmişti. Şimdi Delete ifadesini kullanarak bu kaydı tablodan silelim (Resim 14.6). Resim 14.6. DELETE İfadesinin Kullanımı Atatürk Üniversitesi Açıköğretim Fakültesi 5
WHERE İfadesi Bir tablo içerisindeki verilerden sadece belli şartları taşıyan kayıtların listelenmesini sağlar. Where ifadesi Select, Update ve Delete ifadeleri ile birlikte kullanılabilir. Bu ifadenin genel kullanımı aşağıdaki gibidir: [SELECT, UPDATE, DELETE ifadelerinden biri] WHERE koşul veya koşullar Where ifadesi Insert ifadesiyle birlikte kullanılamaz. Where ifadesinin Select, Update ve Delete ifadeleriyle kullanımı aşağıdaki gibidir: Resim 7 deki örnekte Where ifadesi kullanılarak Personel tablosundan sadece Şehir alanı Erzurum olan kayıtlar listelenmiştir. Resim 14.7. SELECT WHERE Kullanımı Resim 8 de Where ifadesi kullanılarak sadece Cem isimli kaydın Şehir ve Adres bilgileri güncellenmiştir. Resim 14.8. UPDATE WHERE Kullanımı Resim 9 da Where ifadesi kullanılarak sadece şehri Sakarya olan kayıtlar silinmiştir. Resim 14.9. DELETE WHERE Kullanımı Atatürk Üniversitesi Açıköğretim Fakültesi 6
Where ifadesi ile yazılan koşullarda birtakım karşılaştırma ve mantıksal operatörler kullanılmaktadır. Karşılaştırma operatörleri Where ifadesinde bulunan alan adı ile değer arasında kullanılır. Mantıksal operatörler ise aynı anda birden fazla koşulu sağlayan kayıtlar üzerinde işlem yapmayı sağlar. Örneğin ad, soyad, ders ve puan bilgilerinin yer aldığı Notlar tablosunda (Resim 14.10) puanı 50 den yüksek olan öğrencilerin filtrelenerek listelenmesi istendiğinde Where koşul ifadesinde > karşılaştırma operatörü kullanılır. Mantıksal operatöre de sadece matematik dersinden 50 den yüksek puan alan öğrencilerin filtrelenerek listelenmesi örnek olarak verilebilir. Bu koşul ifadeleri Resim 14.11 de gösterilmiştir. Karşılaştırma Operatörü Resim 14.11. Notlar Tablosu Mantıksal Operatör 1. sorgu sonucu (50 den yüksek puan alanlar) 2. sorgu sonucu (Matematik dersinden 50 den yüksek puan alanlar) Resim 10. Karşılaştırma Operatörü Mantıksal Operatör Atatürk Üniversitesi Açıköğretim Fakültesi 7
Karşılaştırma operatörleri ve mantıksal operatörler aşağıdaki tabloda açıklamalarıyla gösterilmiştir. Karşılaştırma Operatörleri Mantıksal Operatörler Tablo 14.1. Karşılaştırma Operatörleri Mantıksal Operatörler Operatör Açıklama = Eşit < Küçük > Büyük <= Küçük veya Eşit >= Büyük veya Eşit <> Eşit değil and Her iki koşulun da sonucunun doğru olması durumu or Koşullardan sadece birinin doğru olması durumu not Koşul ifadesinin yanlış olması durumu Verileri Sıralamak Order By ifadesinde ASC ve DESC eklerinin kullanılmaması durumunda sıralama varsayılan olarak küçükten büyüğe doğru yapılır. SQL sorguları sonucunda listelenen verilerin belli bir alandaki değerlere göre sıralanması gerekebilir. Bu işlem için ORDER BY ifadesi kullanılır. Bu ifade yardımıyla veriler alfabetik ya da numerik olarak sıralanabilir. Order By cümlesinde küçükten büyüğe doğru yapılan sıralamalar için ASC (Ascending Artan), büyükten küçüğe doğru sıralamalar için de DESC (Descending Azalan) ifadeleri ek olarak kullanılabilir. Bu eklerin kullanılmaması durumunda varsayılan olarak küçükten büyüğe doğru sıralama yapılır. Order By ifadesinin genel kullanımı aşağıdaki gibidir: SELECT Alan1, Alan2 FROM Tablo_Adı ORDER BY Sıralanacak Alan Adı ASC veya DESC Örneğin online olarak iş başvurusu alan bir şirket başvuranların yaşına göre değerlendirme yapmak istemektedir. Buna göre ad, soyad, başvuru ili, doğum yılı ve öğrenim düzeyi bilgilerinin yer aldığı Başvurular tablosundaki (Resim 14.12) bilgiler doğum yılına göre sıralanacaktır. Resim 14.12. Başvurular Tablosu Atatürk Üniversitesi Açıköğretim Fakültesi 8
Bu sıralama işlemi için yazılacak SQL sorgusu ve tablonun son hâli Resim 14.13 te gösterilmiştir. Sorgu çalıştırıldıktan sonra Doğum Yılı alanındaki değerler küçükten büyüğe doğru sıralandı. Resim 13. ORDER BY İfadesinin Kullanımı Sorgu cümlesinde DESC eki kullanılırsa değerler büyükten küçüğe doğru sıralanır (Resim 14.14). Resim 14.14. ORDER BY DESC Atatürk Üniversitesi Açıköğretim Fakültesi 9
Verileri Gruplandırmak Bazı durumlarda veriler bir alandaki değerlere göre kümelere ayrılmak istenebilir. Bu kümeleme işlemi tablonun tamamına uygulanabildiği gibi GROUP BY ifadesi yardımıyla belirli bir gruba da uygulanabilir. Veriler üzerinde işlem yaparken toplam kayıt sayısı, en küçük değer, en büyük değer gibi bilgilere ihtiyaç duyulabilir. Bunun için AVG(), COUNT(), MAX(), MIN() ve SUM() fonksiyonları kullanılır. Bu fonksiyonlar kullanıldığında ortaya çıkan değerler GROUP BY ile belirlenen sütunlara göre listelenir. Fonksiyonların Group By ile birlikte genel kullanımı aşağıdaki gibidir: SELECT Alan Adı, COUNT(Alan Adı) FROM Tablo_Adı GROUP BY Alan Adı Örneğin başvurular tablosunda yer alan kayıtlardan her bir öğrenim düzeyine ait başvuru sayısı Resim 14.15 teki SQL ifadesi kullanılarak bulunabilir. Group By ifadesi Where ifadesinden sonra Order By ifadesinden önce kullanılmalıdır. Group By ifadesi kullanıldığında öğrenim düzeyine göre başvuru sayısı listelenir. Resim 15. GROUP BY İfadesinin Kullanımı Atatürk Üniversitesi Açıköğretim Fakültesi 10
Veriler Üzerinde Arama Yapmak Tablo içerisindeki veriler üzerinde arama yapılarak sadece belli şartları sağlayan verilerin listelenmesi için LIKE anahtar kelimesi kullanılır. LIKE anahtar kelimesi, WHERE ifadesiyle birlikte kullanılır. WHERE ifadesinin kullanımında bulunan = operatörü yerine LIKE anahtar kelimesi yazılır ve gerekli koşullar belirtilir. LIKE anahtar kelimesinin genel kullanımı aşağıdaki gibidir: [SELECT, UPDATE, DELETE ifadelerinden biri] WHERE Alan Adı LIKE Koşul LIKE anahtar kelimesi ile bir alan içerisinde arama yapılırken bazı karakterler kullanılır. Bu karakterler ve bunların kullanım amaçları Tablo 2 de verilmiştir. Tablo 14.2. LIKE Anahtar Kelimesi Arama Karakterleri Karakter % _ [ ] [^] Kullanım amacı Arama metni içerisindeki sıfır, bir veya birden fazla karakteri temsil eder. % işareti ile benzer işleve sahip olup arama metni içerisinde sadece bir karakteri temsil eder. Genellikle % karakteri ile birlikte kullanılır. Parantezler içerisindeki harf aralığını koşul olarak alır ve filtreleme işlemini yapar. Parantezler içerisindeki karakterleri içermeyen kayıtları listeler. Arama karakterleriyle ilgili örnek kullanımlar ve açıklamaları Tablo 14.3 te verilmiştir. Sorgu örneklerinde alan adı olarak adres kullanılmıştır. Tablo 14.3. Arama Karakterlerinin Kullanım Örnekleri Örnek Kullanım WHERE Adres LIKE 'bel%' Açıklama bel ile başlayan kayıtlar listelenir. Ör: belde, belediye WHERE Adres LIKE '%Sakarya%' Sakarya kelimesini içeren kayıtlar listelenir. WHERE Adres LIKE '_emal' WHERE Adres LIKE '[A N]%' WHERE Adres LIKE '[^A N]%' 5 karakterden oluşan ilk karakteri ne olursa olsun ancak son 4 karakteri emal olan kayıtlar listelenir. Ör. Kemal, Cemal A ile N arasındaki herhangi bir harfle başlayan kayıtlar listelenir. Ör. Aksaray, Balık, Nar A ile N arasındaki harfler dışında kalan herhangi bir harfle başlayan kayıtlar listelenir. Ör. Yozgat, Ordu Atatürk Üniversitesi Açıköğretim Fakültesi 11
Özet Veritabanındaki veriler üzerinde tablo oluşturma, veri girme, silme veya güncelleme gibi işlemler sorgular yardımıyla gerçekleştirilmektedir. Sorgular, tablo içerisindeki veriler üzerinde gruplama, hesaplama veya özetleme gibi işlemleri yapmak için kullanılan çok güçlü araçlardır. Tablo içerisindeki verilerin tamamının veya belli şartlara göre bir kısmının listelenmesi için SELECT ifadesi kullanılır. Tabloya yeni kayıt eklemek için INSERT ifadesi kullanılır. Tablo içerisinde bulunan herhangi bir kaydın güncellenmesi için UPDATE ifadesi kullanılır. Tablo içerisinde bulunan kayıtların belli koşul ya da koşullara göre silinmesi için DELETE ifadesi kullanılır. Tablo içerisindeki verilerden sadece belli şartları taşıyan kayıtların listelenmesi için WHERE ifadesi kullanılır. WHERE ifadesi SELECT, UPDATE ve DELETE ifadeleri ile birlikte kullanılabilir. Verilerin belli bir alandaki değerlere göre sıralanması için ORDER BY ifadesi kullanılır. Verileri bir alandaki değerlere göre kümelere ayırmak için GROUP BY ifadesi kullanılır. Veriler içerisinde arama yapmak için LIKE anahtar kelimesi kullanılır. Atatürk Üniversitesi Açıköğretim Fakültesi 12
Değerlendirme sorularını sistemde ilgili ünite başlığı altında yer alan bölüm sonu testi bölümünde etkileşimli olarak cevaplayabilirsiniz. DEĞERLENDİRME SORULARI 1. Bir tabloda verilerin tamamının veya belli şartlara göre bir kısmının listelenmesini sağlayan SQL ifadesi aşağıdakilerden hangisidir? a) Insert b) Select c) Update d) Create e) List 2. Veri listeleme işleminde bir tablodaki bütün alanların görütülenmesi için alan adı yazmak yerine aşağıdaki sembollerden hangisi kullanılır? a) b), c) * d) = e)? 3. Bir tablodan kayıt silmek için aşağıdaki SQL komutlarından hangisi kullanılır? a) Delete b) Drop c) Select d) Update e) Insert 4. Aşağıdaki sorgulardan hangisi Musteri tablosundan integer tipindeki ID alanında 1 değerine sahip kayıtları siler? a) Delete from Musteri b) Delete * from Musteri Where ID=1 c) Delete ID from Musteri Where = 1 d) Delete from Musteri Where ID=1 e) Delete from Musteri Where ID= 1 5. Bir tabloya kayıt eklemek için aşağıdaki komutlardan hangisi kullanılır? a) Delete b) Select c) Update d) Create e) Insert Atatürk Üniversitesi Açıköğretim Fakültesi 13
6. Bir tablo içerisindeki verilerden sadece belli şartları taşıyan kayıtların listelenmesi ifadesi ile sağlanır. Cümledeki boş bırakılan yere aşağıdakilerden hangisi getirilmelidir? a) Where b) Update c) Order By d) Group By e) Having 7. Verileri sıralamak aşağıdaki ifadelerden hangisi kullanılır? a) Group By b) Having c) Order By d) Delete e) Select 8. Toplam kayıt sayısı aşağıdaki fonksiyonlardan hangisi kullanılarak öğrenilir? a) Avg b) Sum c) Max d) Count e) Min 9. Bir select ifadesinden dönen veri kümesini belirli alanlara göre gruplandırmak için aşağıdakilerden hangisi kullanılır? a) Group By b) Order By c) Where d) Having e) Count 10. Aşağıdakilerden hangisi bir karşılaştırma operatörü değildir? a) > b) < c) <> d) not e) >= Cevap Anahtarı 1.B, 2.C, 3.A, 4.D, 5.E, 6.A, 7.C, 8.D, 9.A, 10.D Atatürk Üniversitesi Açıköğretim Fakültesi 14
YARARLANILAN VE BAŞVURULABİLECEK DİĞER KAYNAKLAR ALGAN, Sefer, (2009), Her Yönüyle C#, Pusula Yayıncılık, İstanbul. AKTAŞ, Volkan, (2013), Her Yönüyle C# 5.0, KODLAB, İstanbul. AKKAYA, M. E. (2013). MS SQL SERVER KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR: Microsoft SQL Server Veritabanına Giriş (Birinci Seviye İlk Adım). Mehmet Emin AKKAYA. NIELSEN, P., & PARUI, U. (2011). Microsoft SQL server 2008 bible (Vol. 607). John Wiley & Sons. THOMAS, S. P. (2013). Installing SQL Server 2012 Step By Step: Installing SQL Server 2012 Step By Step. TekkieBooks. Atatürk Üniversitesi Açıköğretim Fakültesi 15