Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

Tabela uczniowie zawiera kolumnę tekstową nazwisko. Co zwróci zapytanie SELECT MIN(nazwisko) FROM uczniowie;?

A. nazwisko, które jest pierwsze w kolejności alfabetycznej
Dobrze. Dla tekstu MIN zwraca wartość pierwszą w kolejności sortowania, czyli alfabetycznie.
B. nazwisko składające się z najmniejszej liczby liter
Źle. Długość napisu nie ma znaczenia; porównywana jest kolejność alfabetyczna.
C. nazwisko ucznia o najmniejszym identyfikatorze
Źle. Funkcja porównuje tylko wartości kolumny nazwisko, identyfikator nie ma wpływu.
D. błąd, ponieważ funkcja MIN działa wyłącznie na liczbach
Źle. MIN działa także na tekstach i datach, nie tylko na liczbach.

Funkcja MIN nie ogranicza się do liczb. Porównuje wartości kolumny tak samo jak przy sortowaniu ORDER BY, więc dla tekstu zwraca wartość, która stałaby na początku listy posortowanej alfabetycznie. Dla nazwisk Nowak, Adamczyk i Zając wynikiem będzie Adamczyk.

O tym, jak traktowane są polskie litery i wielkość liter, decyduje sposób porównywania napisów ustawiony w bazie (collation), na przykład utf8mb4_polish_ci, w którym „Ł” stoi po „L”. Analogicznie MAX zwróci nazwisko ostatnie w kolejności alfabetycznej, a obie funkcje działają też na datach, zwracając najwcześniejszą i najpóźniejszą.

Ta właściwość przydaje się na przykład przy szukaniu najwcześniejszej daty zamówienia.

Ten wynik zaskakuje, bo nazwa funkcji kojarzy się z liczbami. Częsty błąd to założenie, że MIN na tekście zgłosi błąd. W MySQL funkcja działa na każdym typie, który da się porównać, w tym na tekstach i datach.

Druga pułapka to myślenie o „najmniejszym” jako o najkrótszym. Długość napisu nie ma tu znaczenia: Łoś jest krótszy od Adamczyk, ale alfabetycznie stoi dalej. Do długości służy CHAR_LENGTH(), a najkrótsze nazwisko trzeba by wybrać inaczej, na przykład sortując po CHAR_LENGTH(nazwisko).

Funkcja nie zagląda też do innych kolumn, w tym do identyfikatora. MIN(nazwisko) porównuje wyłącznie nazwiska i zwraca to, które przy sortowaniu rosnącym znalazłoby się na początku.

Zanim użyjesz tej funkcji na kolumnie tekstowej, warto więc sprawdzić, jakie porównywanie napisów ustawiono w tabeli.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.