Sonuçları Sıralama
SELECT komutunu kullanarak, sonuçlar kayıtların veritabanına eklendikleri sırayla döndürüldü. Bu, varsayılan sıralama düzenidir. Bu bölümde, sorgu sonuçlarımızı nasıl sıralayabileceğimize bakacağız. Sıralama, sorgu sonuçlarımızı belirli bir şekilde yeniden düzenlemektir. Sıralama tek bir sütunda veya birden fazla sütunda yapılabilir. Sayı, dizge ve tarih veri türleri üzerinde yapılabilir.
MySQL'de ORDER BY nedir?
MySQL ORDER BY , verileri düzenli bir şekilde sıralamak için SELECT sorgusu ile birlikte kullanılır. MySQL ORDER BY deyimi, sorgu sonuç kümelerini artan veya azalan sırada sıralamak için kullanılır.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
İŞTE
- "SELECT ifadesi…" normal seçim sorgusudur
- "|" alternatifleri temsil eder
- "[NEREDE koşulu | GRUP BY" alan_adı (lar) ı "SAHİP" koşul, sorgu sonuç kümelerini filtrelemek için kullanılan isteğe bağlı koşuldur.
- "ORDER BY" , sorgu sonuç kümesi sıralamasını gerçekleştirir
- "[ASC | DESC]" , sonuç kümelerini artan veya azalan sırada sıralamak için kullanılan anahtar kelimedir. Not ASC , varsayılan olarak kullanılır.
DESC ve ASC Anahtar Kelimeleri nedir?
ASC, yükselmenin kısa biçimidir |
MySQL DESC, azalan için kısa biçimdir |
Sorgu sonuçlarını yukarıdan aşağıya sıralamak için kullanılır. |
Sorgu sonuçlarını aşağıdan yukarıya doğru sıralamak için kullanılır. |
Tarih veri türleri üzerinde çalışırken, en erken tarih listenin en üstünde gösterilir. |
. Tarih türleri üzerinde çalışırken, en son tarih listenin en üstünde gösterilir. |
Sayısal veri türleriyle çalışırken, en düşük değerler listenin en üstünde gösterilir. |
Sayısal veri türleriyle çalışırken, en yüksek değerler sorgu sonuç kümesinin en üstünde gösterilir. |
Dize veri türleriyle çalışırken, sorgu sonuç kümesi, A harfiyle başlayanlardan Z harfine kadar sıralanır. |
Dize veri türleriyle çalışırken, sorgu sonuç kümesi Z harfinden başlayıp A harfine inenlerden sıralanır. |
Hem SQL DESC hem de ASC anahtar sözcükleri, SELECT deyimi ve MySQL ORDER BY yan tümcesi ile birlikte kullanılır.
DESC ve ASC sözdizimi
SQL DESC sıralama anahtar sözcüğü aşağıdaki temel sözdizimine sahiptir.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
İŞTE
- SELECT {fieldName (s) | *} FROM tableName (s) , sonuç kümesinin alınacağı alanları ve tabloları içeren ifadedir.
- [NEREDE koşulu] isteğe bağlıdır, ancak verileri verilen koşula göre filtrelemek için kullanılabilir.
- ORDER BY alan adları zorunludur ve sıralamanın gerçekleştirileceği alandır. MySQL DESC anahtar sözcüğü, sıralamanın azalan sırada olacağını belirtir.
- [SINIR] isteğe bağlıdır ancak sorgu sonuç kümesinden döndürülen sonuçların sayısını sınırlamak için kullanılabilir.
Örnekler:
Şimdi pratik bir örneğe bakalım -
SELECT * FROM members;
Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Diyelim ki pazarlama departmanı üye detaylarının azalan Doğum Tarihine göre düzenlenmesini istiyor. Bu, doğum günlerini zamanında selamlamalarına yardımcı olacaktır. Söz konusu listeyi aşağıdaki gibi bir sorgu yürüterek elde edebiliriz -
SELECT * FROM members ORDER BY date_of_birth DESC;
Yukarıdaki komut dosyasını MySQL çalışma tezgahında myflixdb ile çalıştırmak bize aşağıda gösterilen aşağıdaki sonuçları verir.
Artan sırada aynı sorgu
SEÇİN * Üyelerden SİPARİŞ VERİN tarih_of_birth ASC
Not: NULL değerler, değer olmadığı anlamına gelir (sıfır veya boş dize değil). Nasıl sıralandıklarını gözlemleyin.
Daha fazla örnek
Tüm üye kayıtlarını listeleyen aşağıdaki betiği düşünelim.
SELECT * FROM `members`;
Yukarıdaki komut dosyasını çalıştırmak, aşağıda gösterilen aşağıdaki sonuçları verir.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Cinsiyet alanını kullanarak sorgu sonuç kümesini sıralayan bir liste elde etmek istediğimizi varsayalım, aşağıda gösterilen komut dosyasını kullanacağız.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Önce "Kadın" üyeler, ardından "Erkek" üyeler görüntülenir, bunun nedeni, ASC veya MySQL DESC anahtar sözcüğünü belirtmeden ORDER BY DESC yan tümcesi kullanıldığında, varsayılan olarak MySQL, sorgu sonuç kümesini artan bir sırada sıralamasıdır.
Şimdi sıralamayı iki sütun kullanarak yapan bir örneğe bakalım ; İlki bir kriteri olarak artan düzende ikinci sütun ise, varsayılan olarak kriteri olarak azalan.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Yukarıdaki betiği MySQL çalışma tezgahında myflixdb ile çalıştırmak aşağıdaki sonuçları verir.
Cinsiyet sütunu varsayılan olarak artan düzende sıralanırken, doğum tarihi sütunu açıkça azalan düzende sıralanmıştır.
Neden DESC ve ASC kullanabiliriz?
Ön bürodaki soruları yanıtlamaya yardımcı olması için bir video kütüphanesi üyesi için bir ödeme geçmişi yazdırmak istediğimizi varsayalım, son ödemeden önceki ödemeye kadar ödemelerin azalan bir kronolojik sırayla yazdırılması daha mantıklı olmaz mıydı?
SQL'de DESC, bu tür durumlarda kullanışlı hale gelen bir anahtar sözcüktür. Ödeme tarihini kullanarak listeyi azalan sırada sıralayan bir sorgu yazabiliriz.
Pazarlama departmanının, üyelerin film kiralarken kütüphanede hangi filmlerin mevcut olduğuna karar vermek için kullanabilecekleri kategoriye göre bir film listesi almak istediğini varsayalım, film kategorisi adlarını ve başlığını artan şekilde sıralamak daha mantıklı olmaz mıydı? üyeler listedeki bilgileri hızlıca arayabilir mi?
ASC anahtar sözcüğü bu tür durumlarda kullanışlıdır; Film listesini kategori adına ve film başlığına göre artan sırada alabiliriz.
Özet
- Sorgu sonuçlarının sıralanması, bir sorgu sonuç kümesinden döndürülen satırları artan veya azalan sırada yeniden düzenlemektir.
- SQL'de DESC anahtar sözcüğü, sorgu sonuç kümesini azalan düzende sıralamak için kullanılır.
- ASC anahtar sözcüğü, sorgu sonuç kümesini artan sırada sıralamak için kullanılır.
- Hem DESC hem de ASC, ORDER BY anahtar sözcüğü ile birlikte çalışır. WHERE yan tümcesi ve LIMIT gibi diğer anahtar kelimelerle birlikte de kullanılabilirler.
- Açıkça hiçbir şey belirtilmediğinde ORDER BY için varsayılan ASC'dir.