6

Click here to load reader

Sql sorgu işlemi (4)

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

Page 1: Sql sorgu işlemi (4)

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

Page 2: Sql sorgu işlemi (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

Page 3: Sql sorgu işlemi (4)

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.

Page 4: Sql sorgu işlemi (4)

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

Page 5: Sql sorgu işlemi (4)

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.

Page 6: Sql sorgu işlemi (4)

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