Select Sorgusu - Where, Order By, Like, Between Kullanımı

SQL - SELECT SORGUSU

Select sorguları bir veya daha fazla tablodan istenilen bilgileri alarak görüntülemek için kullanılır. Select sorguları sadece listeleme işi yapar, tablo(ların) orjinal hallerinde bir değişiklik yaratmazlar.

Select komutundan sonra görüntülenecek alanların ismi yazılır.

From komutu ile bu alanların yer aldığı tablonun ismi belirtilir.

Eğer kayıtlara sınırlama getirilecek ise Where komutu ile birlikte koşul belirtilir.

Kayıtların artan ya da azalan şekilde sıralanarak listelenmesi isteniyorsa Order By komutu kullanılır.

Aşağıda örnek bir tablo oluşturulup bu tablo için örnek sorgular yazılmıştır.

Tablo Adı: Personel

kimlik

adi

soyadi

diplomanotu

cinsiyeti

sehir

1

Ahmet

Öztürk

38

E

İstanbul

2

Veysel

Göktürk

47

E

Ankara

3

Şükran

Şentürk

74

K

Sakarya

4

Ahmet

Ali

84

E

Çanakkale

5

Salih

Yılmaz

 

E

İstanbul

SELECT adi, soyadi FROM personel

Personel tablosundaki adi ve soyadi alanlarındaki tüm kayıtları listeler.

SELECT * FROM personel

Personel tablosundaki tüm alanlardaki kayıtları listeler.

Where Kullanımı

Where komutu listelenecek kayıtların filtrelenmesini sağlar. Where kullanmadığımızd tablodaki tüm kayıtların belirtilen alanları listelenecektir. Where komutundan sonra bir veya birden fazla şart belirtirsek, sadece bu şart(lara) uyan kayıtlar listelenecektir.

SELECT * FROM personel WHERE cinsiyeti=”E”

Personel tablosunda cinsiyeti "E" olan kayıtların tüm alanlarını listeler.

SELECT adi, soyadi FROM personel WHERE diplomanotu>=70 AND cinsiyeti=”E”

Personel tablosunda diploma notu 70'ten büyük olan ve cinsiyeti "E" olan kayıtların adi ve soyadi alanlarını listeler. İki şartın arasına And operatörü yazıldığı için bu şartların ikisinin de tutması gerekir.

SELECT adi, soyadi FROM personel WHERE diplomanotu>=70 AND diplomanotu<=100

Personel tablosunda diploma notu 70'ten büyük ve diploma notu 100'den küçük olan kayıtların adi ve soyadi alanlarını listeler.

SELECT adi, soyadi FROM personel WHERE diplomanotu BETWEEN 70 AND 100

Bir üstteki sorgu ile aynı işi yapar. Personel tablosunda diploma notu 70 ile 100 arasında olan kayıtların adi ve soyadi alanlarını listeler.

SELECT adi + “ “ +soyadi FROM personel

Personel tablosundaki tüm kayıtların, adi ve soyadi alanlarını, aralarında bir boşluk olacak şekilde birleştirerek listeler. + operatörü kullanılarak metin türündeki alanların birleştirilmesi, sayı türündeki alanların ise toplanması sağlanabilir.

Sayı türündeki alanlar ile diğer matematiksel işlemler de gerçekleştirilebilir.

SELECT adi, soyadi, maasi / 100 FROM personel

Yukarıdaki örnekte adi, soyadi alanları ve maasi alanının 100'e bölünmüş hali listelenecektir.

As Komutu Kullanımı

Kayıtlar listelendiğinde sütun başlıkları veritabanındaki başlık ile aynı görünecektir. Listeleme sırasında görünecek başlıkları değiştirmek istersek As komutu kullanabiliriz. Bu kullanım tablodaki sütun başlığını değiştirmez, sadece listelerken farklı görünmesini sağlar.

SELECT adi AS Adı, soyadi AS Soyadı FROM personel

Personel tablosundaki tüm kayıtların, adi alanlarını başlığı "Adı" olacak şekilde, soyadi alanlarını ise başlığı "Soyadı" olacak şekilde listeler.

SELECT adi & “ “ & soyadi AS AdSoyad FROM personel

Metin türündeki alanları birleştirmek için & operatörü de kullanılabilir. Örnekte iki alan birleştirilirken As komutu kullanılarak sütun başlığı AdSoyad yapılmıştır.

Like Komutu İle Arama

Metin türündeki alanlarda bir ifadeyi aramak için kullanılır. Aranan ifadenin önüne ya da sonuna * % gibi özel ifadeler yazılarak arama özelleştirilebilir.

* ifadesi Access için geçerliyken, Sql Server'da % işareti kullanmak gerekir. Yine Access programında çift tırnak kullanılırken, Sql Server'da tek tırnak kullanılarak sabit metinler belirtilir.

SELECT * FROM personel WHERE adi LIKE “A*” OR diplomanotu<45

SELECT * FROM personel WHERE adi LIKE ‘A%’ OR diplomanotu<45  (Sql Server için)

Personel tablosunda adi alanı "A" ile başlayan (devamı ne olursa olsun) veya diplomanotu alanı 45'ten küçük olan kayıtların tüm alanlarını listeler.

SELECT * FROM personel WHERE adi NOT LIKE “A*” OR diplomanotu<45

Personel tablosunda adi alanı "A" ile başlamayan veya diplomanotu alanı 45'ten küçük olan kayıtların tüm alanlarını listeler.

Sql dilindeki diğer joker karakterler:

_ (Alt tire): Tek bir karakter gelebilir.

[bsz] belirtilen karakterlerden biri gelebilir (bsz)

[a-d] a ile d harfleri arasındaki tüm harflerden biri gelebilir (a, b, c, d)

[!abc] belirtilen karakterler hariç herhangi bir karakter gelebilir.

SELECT * FROM personel

WHERE adi LIKE ‘A[bds]%[a-g]’ 

Yukarıdaki örnekte adi alanının belirtilen şarta uyması için ilk harfi A olmalı, ikinci harfi b veya d olmalı, sonrasında istenen uzunlukta metin gelebilir, son harfi ise a ile g arasında olmalı. Mesela Asiye..

In Komutu Kullanımı

Tablodaki bir alanın birden fazla değer eşit olabilme ihtimali varsa, bu şartları Or kullanarak ayrı ayrı yazmak yerine, In komutu ile belirtebiliriz. Belirtilen alan In parantezine yazılan değerlerden birine eşitse o kayıt listelenecektir.

SELECT * FROM personel WHERE sehir IN("İstanbul","Ankara") AND soyadi IN("Öztürk","Ali","Göksu","Yılmaz" ) 

Personel tablosunda sehir alanı "İstanbul" veya "Ankara olan ve soyadi alanı "Öztürk, Ali, Gösu, Yılmaz" değerlerinden biri olan kayıtların tüm alanlarını listeler. In komutu sayesinde parantez içerisinde verilen değerlerden birisi olacak şekilde kısıtlama getirebiliriz.

Is Null Kullanımı

Belirtilen alanın boş olduğu kayıtları seçmek için is null, boş olmayanları seçmek içinse is not null şeklinde kullanabiliriz.

SELECT * FROM personel WHERE diplomanotu Is Null

Personel tablosunda diplomanotu alanı boş olan kayıtların tüm alanlarını listeler.

SELECT * FROM personel WHERE diplomanotu Is Not Null

Personel tablosunda diplomanotu alanı boş olmayan kayıtların tüm alanlarını listeler.

Order By Kullanımı

Kayıtların listelenirken belli bir alandaki veriye göre, artan (küçükten büyüğe - ASC) veya azalan (büyükten küçüğer - DESC) şekilde sıralanmasını sağlar. Asc veya desc belirtilmezse, varsayılan olarak Asc kabul edilir ve artan sıralama yapılır.

SELECT * FROM personel ORDER BY diplomanotu DESC

Personel tablosundaki tüm kayıt ve alanları, diplomanotu alanına göre azalan şekilde sıralayarak listeler.

SELECT adi, soyadi FROM personel ORDER BY diplomanotu

Personel tablosundaki tüm kayıtların adi ve soyadi alanlarını, diplomanotu alanına göre artan şekilde sıralayarak listeler.

SELECT adi, soyadi FROM personel WHERE cinsiyeti=”E” ORDER BY diplomanotu DESC

Personel tablosunda cinsiyeti alanı "E" olan kayıtların adi ve soyadi alanlarını, diplomanotu alanına göre azalan şekilde sıralayarak listeler.

SELECT * FROM personel ORDER BY diplomanotu DESC, adi ASC, soyadi DESC, kimlik

Personel tablosundaki tüm kayıt ve alanları;
öncelikle diplomanotu alanına göre azalan,
diplomanotu eşit ise adi alanına göre artan,
adi alanı da eşit ise soyadi alanına göre azalan,
soyadi alanı da eşit ise kimlik alanına göre artan şekilde sıralayarak listeler.

Top Komutu

Listelenen kayıtların tamamını değil de belli bir miktarını almak için kullanılır. Örneğin sınav notuna göre ilk 3 öğrenciyi listelemek gibi..

SELECT TOP 5 adi, soyadi FROM matematik ORDER BY sinav1 DESC

Kayıtların belli bir yüzdesi de elde edilebilir. Örneğin maaşlarına göre sıralanan çalışanların yüzde 25 kadarını listelemek için:

SELECT TOP 25 PERCENT adi, soyadi FROM personel ORDER BY maas DESC

Distinct Kullanımı

Bazen kullanılan tabloda aynı kayıtlar birden fazla defa geçebilir. Böyle durumlarda aynı değerlerin yalnızca bir defa listelenmesini istersek Distinct komutunu kullanabiliriz.

Örneğin en üstteki tabloda İstanbul iki defa geçmektedir. Aşağıdaki sorgu çalıştırıldığında İstanbul bir defa listelenecektir.

SELECT DISTINCT sehir FROM personel

 

*** SQL Server için bu sorgular yazılacak ise çift tırnakların yerine tek tırnak konmalıdır.

sql Select sorgusu örnekleri, sql where kullanımı ile filtreleme, sql verileri sıralama, küçükten büyüğe sıralama, sql order by kullanımı

KONU İLE İLGİLİ ÖRNEKLER

Bu konu ile ilgili örnek bulunmamaktadır.



YORUMLAR




13781  kez okundu.

Online Kullanıcı Sayısı 965