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:

Obrazek posiada pusty atrybut alt; plik o nazwie image-18.png

Teraz wykonajmy to samo zapytanie lecz posortujmy kolumnę Name rosnąco.

ZAPYTANIE:

SELECT Name 
FROM city
ORDER BY Name;

WYNIK:

Obrazek posiada pusty atrybut alt; plik o nazwie image-31.png
ORDER BY ASC

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:

Obrazek posiada pusty atrybut alt; plik o nazwie image-32.png
ORDER BY DESC

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;
ORDER BY WG KILKU KOLUMN

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;
ORDER BY

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.