SQL’de ORDER BY Deyimi

Bu derste SQL’de SELECT deyimiyle beraber kullanılan ORDER BY deyiminin kullanımıyla ilgili bazı örnekler yapacağız.

Önceki derslerde de olduğu gibi, bu derste de aşağıdaki örnek tablomuzu kullanacağız.

tablo: personel

ID isim bolum dtarihi dyeri maas
24 Aylin Demiray Muhasebe 1982 Niğde 1100
42 Mehmet Eroğlu Bilgi İşlem 1977 Ankara 1450
54 Selim Kaya Bilgi İşlem 1965 Konya 1400
61 Sevda Gökalp Arşiv 1980 İstanbul 1300

Not: Tablodaki ID alanı birincil anahtar; ID, dtarihi ve maas alanları sayısal, diğerleri metin tiptedir. Ayrıca normal şartlarda bolum ve dyeri alanlarında ilişki kurulması gerekir. Fakat burada konuyu basit tutmak amacıyla bilgiler bu şekilde kaydedilmiştir.

ORDER BY ile Sıralama Yapmak

Önceki derslerden de bilindiği üzere SELECT deyimini kullanarak veritabanımızda bulunan tablolardaki verileri çekebiliyorduk. Normal şartlarda SELECT ile sorguladığımız veriler tabloya kayededilme sırasına göre elde edilir. Fakat bu normal akışı ORDER BY deyimi aracılığıyla değiştirebiliriz. Yani yukarıdaki tabloda personel bilgilerini doğum tarihlerine göre artan/azalan sırada çekebiliriz. ORDER BY deyimi yalnızca SELECT ile beraber kullanılır ve formatı şu şekildedir.

SELECT [alanlar] WHERE [şartlar] ORDER BY [sıralama alanı] ASC/DESC

Burada WHERE ifadesinin kullanılması seçimliktir. Yani şart belirtilmeyecekse, kullanılmayabilir. ORDER BY ifadesinden sonra sıralama yapacağımız alanı belirtiyoruz. En sonda ise artan veya azalan şekilde sıralamayı belirtmek için ASC veya DESC ifadesini kullanıyoruz. ASC artan, DESC azalan sıralamayı ifade eder. Şimdi örneklerimize başlayalım:

SELECT * FROM personel ORDER BY dtarihi ASC

Bu sorguda personel tablosundaki tüm veriler (*) dtarihi alanına göre artan sırada seçilecek. Artan sırada olması ASC yazmamızdan kaynaklanıyor. DESC yazsaydık, azalan sırada seçilecekti. Ayrıca eğer artan sıralama yapmak istiyorsak ASC yazmamıza gerek yoktur. Çünkü varsayılanı ASC’dir. Dolayısıyla yukarıdaki sorgunun dengi şudur:

SELECT * FROM personel ORDER BY dtarihi 

Bu iki sorgunun sonucu da aşağıdaki kayıtsetini döndürür:

ID isim bolum dtarihi dyeri maas
54 Selim Kaya Bilgi İşlem 1965 Konya 1400
42 Mehmet Eroğlu Bilgi İşlem 1977 Ankara 1450
61 Sevda Gökalp Arşiv 1980 İstanbul 1300
24 Aylin Demiray Muhasebe 1982 Niğde 1100

Başka bir örnekle devam edelim:

SELECT * FROM personel ORDER BY maas DESC 

Bu sorguya göre personel tablosundaki tüm veriler maas alanına göre azalan sırada seçilecek:

ID isim bolum dtarihi dyeri maas
42 Mehmet Eroğlu Bilgi İşlem 1977 Ankara 1450
54 Selim Kaya Bilgi İşlem 1965 Konya 1400
61 Sevda Gökalp Arşiv 1980 İstanbul 1300
24 Aylin Demiray Muhasebe 1982 Niğde 1100

Şimdiki örnekte ORDER BY ile sayısal alanlar yerine karaktersel alanlarda nasıl sıralama yapılacağıyla ilgili bir örnek yapacağız.

SELECT * FROM personel ORDER BY dyeri DESC 

Bu sorguya göre personel tablosundaki tüm veriler dyeri alanına göre azalan sırada seçilecek:

ID isim bolum dtarihi dyeri maas
24 Aylin Demiray Muhasebe 1982 Niğde 1100
54 Selim Kaya Bilgi İşlem 1965 Konya 1400
61 Sevda Gökalp Arşiv 1980 İstanbul 1300
42 Mehmet Eroğlu Bilgi İşlem 1977 Ankara 1450

Sıralama yapmak için karaktersel bir alan kullanılırsa sıralama A’dan Z’ye veya tam tersi şeklinde gerçekleşir. Son bir örnekle bitirelim:

SELECT * FROM personel ORDER BY bolum ASC, dtarihi DESC 

Bu sorguda da personel tablosundaki tüm verileri önce bölümlere göre A’dan Z’ye doğru, eğer bölümlerde eşit kayıtlar varsa da dtarihi alanına göre azalan sırada listeledik:

ID isim bolum dtarihi dyeri maas
61 Sevda Gökalp Arşiv 1980 İstanbul 1300
42 Mehmet Eroğlu Bilgi İşlem 1977 Ankara 1450
54 Selim Kaya Bilgi İşlem 1965 Konya 1400
24 Aylin Demiray Muhasebe 1982 Niğde 1100

Örneklerimiz bu kadar, faydalı olması dileğiyle.

BENZER YAZILAR