Click here to load reader
Upload
alinizam99
View
258
Download
1
Embed Size (px)
DESCRIPTION
SQL Sorgulama işlemi temel kısımlarını örneklerle anlatan notlar. Ali Nizam. Fatih Sultan Mehmet Vakıf Üniversitesi
Citation preview
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi) ([email protected])
1
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
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi) ([email protected])
2
Ö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
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi) ([email protected])
3
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.
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi) ([email protected])
4
Ö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
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi) ([email protected])
5
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.
Veritabanı Notları Ali Nizam (Fatih Sultan Mehmet Vakıf Üniversitesi) ([email protected])
6
Ö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