Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi)
(ali.nizam@fsm.edu.tr)
SQL SORGULAMA İŞLEMİ - SELECT Komutu
SELECT deyimi veritabanından veriyi almak için kullanılır. Verinin gösterilmesi, belli
özelliklere sahip verinin seçilmesi, sıralama, gruplama, farklı veri kümelerinin birleştirilerek
gösterilmesi gibi işlemler gerçekleştirilir. En çok kullanılan SQL komutudur. SELECT iler veri
seti bulunarak üzerinde değiştirme, ekleme, silme gibi işlemler de yapılabilir.
1.1 SQL Genel İfadesi
SELECT [DISTINCT], [*], (kolon listesi)
FROM (tablo listesi)
WHERE (birleştirme (join) şartları ve sorgu şartları)
GROUP BY (kolon listesi)
HAVING (sorgu koşulları)
ORDER BY (kolonlar, ifadeler)
Köşeli parantezler seçime bağlı alanları belirtmektedir. İfadede olabilir veya olmayabilir.
Normal parantezler programcı tarafından belirlenen kısımlardır.
Sütun Kolon seçimi
Satır Seçimi
Gruplama
Mavi satırlar için tek bir sonuç ve kahverengi satırlar için tek sonuç dönmesinin sağlanması
Sıralama
1 1
3 2
2 3
4 4
1
2.
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi)
(ali.nizam@fsm.edu.tr)
Örneklerin çalıştırılacağı ortam
Oracle SQL Developer ile veritabanına bağlanalım.
SELECT ile FROM arasındaki kısım seçilecek kolonları belirler.
Bir tablodaki tüm kolonlardaki bilgiler seçmek için
(SELECT * FROM ... )yazım şekli kullanılır.
FROM dan sonra veri seçilecek tablo isimleri yazılır.
WHERE kısıtlayıcı şartların yazıldığı kısımdır.
Örneğin regions tablosundaki tüm kayıtları seçmek için
SELECT *
FROM regions
Komutu çalıştırdığımızda aşağıdaki sonuç gelir.
REGION_ID REGION_NAME
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
2
3.
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi)
(ali.nizam@fsm.edu.tr)
Sadece belli kolonlar seçilmek isteniyorsa onların isimleri yazılır.
SELECT region_id
FROM regions
Komutu çalıştırdığımızda aşağıdaki sonuç gelir.
REGION_ID
1
2
3
4
Bazı satırları seçmek istiyorsak bu durumda WHERE şartında kısıtlayıcı ifadeler
yazmamamız gerekir.
SELECT *
FROM regions
WHERE region_id=2
REGION_ID REGION_NAME
2 Americas
Hem kısıtlayıp hem de belli kolonları seçebiliriz.
SELECT region_name
FROM regions
WHERE region_id=2
REGION_NAME
Americas
1.2 Genel sonuçları kısıtlamak WHERE şartı
SQL'de gelen sonuçları kısıtlamak için WHERE şartı kullanılır. Grup işlemlerinde kısıtlama
yapmak için HAVING'in nasıl kullandığı ayrıca açıklanacak...
Örnek 101 Id numarasına sahip çalışanı bulunuz.
SELECT first_name, last_name
FROM employees
WHERE employee_id=101
Sonuç
FIRST_NAME LAST_NAME
Neena Kochhar
"employee_id=101" ifadesine yakından bakalım.
WHERE şartı bu tür mantıksal doğru ve yanlış sonuç üreten ifadelerin birleşiminden oluşur.
employee_id kolon ismidir. 101 dışarıdan verilen sabit bir numaradır. Arada eşitlik(=) mantıksal
sonuç üretmeyi sağlar. Eğer eşitse TRUE aksi halde FALSE üretir. Sonuç FALSE ise ilgili kayıt
dönmez.
Yukarıdaki sorgudan sadece 101 nolu çalışanın kaydı döner.
WHERE şartında eşitlik yerine büyük (>), küçük (<), (>=), (<=) gibi operatörler de kullanılabilir.
3
4.
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi)
(ali.nizam@fsm.edu.tr)
Örnek: Maaşı 15000 $ dan büyük ve eşit çalışanları bulmak isteyelim
SELECT first_name, last_name, salary
FROM employees
WHERE salary>15000
Sonuç:
FIRST_NAME LAST_NAME SALARY
Steven King 24000
Neena Kochhar 17000
Lex De Haan 17000
1.3 Format Uygunluk kontrolü: LIKE operatörü
LIKE ve yüzde (%), alt çizgi
Veri formatını kısme bidiğimiz bilmediğimiz sorgulamalarda istediğimiz bilgilere ulaşmak için LIKE
operatörü kullanılır. LIKE kullanarak farklı format aramaları yapılabilir.
(%) bir ya da daha fazla değer içeren herhangi bir kısım aranıyorsa kullanılır
( _ )herhangi tek bir karakter ve özellikle belli bir sırasındaki karakterler aranıyorsa
kullanılır.
Örnek: İlk harfi 'H' olan çalışanları bulunuz.
SELECT first_name, last_name, salary
FROM employees
WHERE first_name like 'H%'
Sonuç
FIRST_NAME LAST_NAME SALARY
Hermann Baer 10000
Harrison Bloom 10000
Hazel Philtanker 2200
(SQL'de sabit metinler '(tek tırnak) içerisine yazılır. Yukarıda 'H%' kullanımına dikkat.)
1.4 Aralık Bulma (BETWEEN) operatörü
Kolon değeri verilen sayı ve tarih aralığındaki satırları seçmek için kullanılır.
Aralığın küçük değeri önce yazılmalıdır. Aksi halde kayır dönmez.
Örnek: Maaşı 15000 ile 20000 arası çalışanlar:
SELECT first_name, last_name, salary
FROM employees
WHERE salary BETWEEN 15000 AND 20000
Sonuç:
FIRST_NAME LAST_NAME SALARY
Neena Kochhar 17000
Lex De Haan 17000
4
5.
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi)
(ali.nizam@fsm.edu.tr)
1.5 Boş bırakılan değerler (NULL kullanımı)
Bir kolona bir satırda değer girilmemişse NULL kabul edilir. NULL özel bir aritmetiğe sahiptir.
Hiç bir sayı NULL'a eşit değildir.
NULL da kendisine eşit değildir.
Örnek: Birimi girilmemiş çalışanları bulmak isteyelim.
(Yanlış Kullanım)
SELECT first_name, last_name
FROM employees
WHERE department_id = NULL
Yukarıdaki ifade hiç bir kayıt döndürmez. Ancak kayıtlar incelendiğinde birimi boş bir çalışan
olduğu görülecektir.
NULL için özel bir operatör kullanılmalıdır. (IS NULL). Bu kullanılırsa problem çözülür.
(Doğru Kullanım)
SELECT first_name, last_name
FROM employees
WHERE department_id IS NULL
FIRST_NAME LAST_NAME
Kimberely Grant
1.6 Mantıksal Operatörler (1)
Mantıksal operatörler, bir SQL yapısı içerisindeki WHERE cümlesi içinde iki veya daha fazla koşulun
arasındaki bağlantının ifade edilmesinde kullanılırlar. AND, OR, NOT operatörleridir. İkiden fazla şart
olması durumunda bu operatörler tekrar tekrar kullanılabilir. Bu durumunda ifadeleri ayırmak için
parantez kullanımı uygun olacaktır.
1.6.1 AND
İki koşulun da TRUE olması durumunda TRUE koşullarda birinin veya ikisinin birden sağlanmaması
durumunda FALSE değerini döndürür.
AND Doğruluk tablosu
AND TRUE FALSE NULL
TRUE TRUE FALSE NULL
FALSE FALSE FALSE FALSE
NULL NULL FALSE NULL
Özellikler NULL üzerinde yapılan işlemlere dikkat edilmelidir. AND için baskın olan FALSE ifadesi
olduğundan herhangi bir ifadenin FALSE olması halinde sonuç FALSE olacaktır.
5
6.
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi)
(ali.nizam@fsm.edu.tr)
Örnek: 90 'nolu birimde çalışıp 5000 $ üzeri maaş alan personelleri bulalım. (Bu arada
maaşlarda hakikaten iyiymiş)
SELECT first_name,last_name,salary,department_ıd
FROM employees
WHERE department_id=90
AND salary>5000
Sonuç:
FIRST_NAME LAST_NAME SALARY DEPARTMENT_ID
Steven King 24000 90
Neena Kochhar 17000 90
Lex De Haan 17000 90
1.6.2 OR
İki koşuldan bir tanesinin veya ikisinin de TRUE olması durumunda TRUE iki koşulunda
birden FALSE olması durumunda FALSE değerini döndürür.
OR Doğruluk tablosu
OR TRUE FALSE NULL
TRUE TRUE TRUE TRUE
FALSE TRUE FALSE NULL
NULL TRUE NULL NULL
OR için baskın olan TRUE şart olduğuna göre herhangi bir ifadenin TRUE olması halinde
sonucun TRUE olması buraya da uygulanabilecek bir kuraldır.
Örnek: 90 'nolu birimde çalışan veya 5000 $ üzeri maaş alan personelleri bulalım.
SELECT first_name,last_name,salary,department_ıd
FROM employees
WHERE department_id=90
OR salary>5000
Sonuç (58 kişi geldiğinden sadece bir kısmı gösterilmiştir.)
FIRST_NAME LAST_NAME SALARY DEPARTMENT_ID
Steven King 24000 90
Neena Kochhar 17000 90
Lex De Haan 17000 90
Alexander Hunold 9000 60
Bruce Ernst 6000 60
Nancy Greenberg 12008 100
Daniel Faviet 9000 100
*** *** *** ***
1.6.3 NOT
İfadeyi mantıksal tersi yapar. TRUE ise FALSE, FALSE ise TRUE.
NOT Doğruluk tablosu
NOT TRUE FALSE NULL
TRUE TRUE FALSE NULL
(1) Veritabani-Tasarimi-iliskisel-Veri-Modeli-ve-Uygulamalari
6