WPROWADZENIE DO SORTOWANIA SQL
Dane, które otrzymuje się w wyniku działania polecenia SELECT nie są w żaden sposób uporządkowane, chociaż ich wyświetlanie nie jest przypadkowe. Jest ono determinowane przez sposób ułożenia w tabelach. Wielokrotne operacje zapisu, usuwania i modyfikacji danych powodują, że sposób ich wyświetlania może przestać być zgodny z wymaganiami użytkownika, stąd też pojawiła się potrzeba sortowania. Sortowanie najczęściej odbywa się według określonej kolumny lub zestawu kolumn. Sortowanie odbywa się poprzez opcjonalną klauzulę ORDER BY.
SKŁADNIA ORDER BY
SELECT column1, column2, column3…
FROM table_name
ORDER BY column1, column2, column3… ASC|DESC;
ORDER BY – KIERUNEK SORTOWANIA
Słowo kluczowe ORDER BY dodaje się na końcu zapytania, kiedy wynik jest już zdefiniowany i należy go jedynie uporządkować. Domyślnie sortowanie odbywa się rosnąco (ASCENDING). Ponieważ sortowanie to jest domyślne, przy jego wyborze nie jest koniecznym dopisywanie ASC – jednak dla pewności i czytelności kodu nie jest błędem dopisywanie tego skrótu.
Z kolei sortowanie malejące określa się dopisując na końcu instrukcji DESC (DESCENDING). Spróbujmy wykonać przykład:
ZAPYTANIE:
SELECT Name
FROM city;
WYNIK:

Teraz wykonajmy to samo zapytanie lecz posortujmy kolumnę Name rosnąco.
ZAPYTANIE:
SELECT Name
FROM city
ORDER BY Name;
WYNIK:

ANALIZA
Otrzymaliśmy uporządkowany rosnąco czyli domyślnie zbiór danych.
Spróbujmy teraz odwrócić kolejność, czyli posortujmy dane malejąco.
ZAPYTANIE:
SELECT Name
FROM city
ORDER BY Name DESC;
WYNIK:

ANALIZA:
W powyższym zapytaniu wymuszono sortowanie malejące używając słowa DESC.
Wielkość liter w sortowaniu słownikowym nie ma znaczenia, dlatego 'a’ jest traktowane na równi z 'A’. Większość systemów baz danych pracuje w ten właśnie sposób lecz trzeba pamiętać o tym iż można zdefiniować inne zasady, przy niektórych językach zmiana taka jest czasami koniecznością.
ORDER BY – SORTOWANIE PO KILKU KOLUMNACH
Sortowanie może odbywać się na podstawie wielu kolumn. Co więcej w różnych kolejnościach. Wybierzmy dwie kolumny z tabeli city. a następnie posortujemy je
SELECT Name, CountryCode
FROM city
ORDER BY CountryCode DESC, Name;

ANALIZA:
W powyższym przykładzie dane wynikowe zostały w pierwszej kolejności posortowane malejąco wg. kodu kraju (CountryCode), a następnie rosnąco wg nazwy (Name). Zauważ też, że zmieniono kolejność wyświetlania kolumn. Warto zaznaczyć, że gdyby obie kolumny chcieć być posortować malejąco to przy każdej z nich należy dopisać słowo DESC.
ORDER BY – SORTOWANIE PO KOLUMNACH NIEWYBRANYCH
Sortować można też po kolumnach, których nie chcemy w zbiorze wynikowym.
ZAPYTANIE:
SELECT Name
FROM city
ORDER BY CountryCode;

ANALIZA:
W powyższym przykładzie wyświetlono jedną kolumnę, lecz kolejność wyświetlania rekordów jest określona przez sortowanie rosnące wg. kolumny CountryCode
ORDER BY – SORTOWANIE WG POŁOŻENIA KOLUMNY
ZAPYTANIE:
SELECT Name, CountryCode
FROM city
ORDER BY CountryCode, Name;
SELECT Name, CountryCode
FROM city
ORDER BY 2, 1;
WYNIK:

ANALIZA:
Powyższe dwa zapytania tak naprawdę robią to samo, tyle tylko, że w drugim przypadku zbiór wynikowy został posortowany wg. względnego położenia kolumn w zapytaniu. Zasadę taką stosuje się do uproszczenia zapisu, jednak niekiedy przysparza kłopotów, np. wtedy gdy zmienimy szyk kolumn.
Podsumowanie
Na tej lekcji dowiedzieliście się czym jest sortowanie, do czego służy oraz jak prawidłowo go używać. Za sortowanie odpowiedzialna jest klauzula ORDER BY umieszczana na końcu zapytania.