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.