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: Programowanie webowe Bazy danych

Z tabeli mieszkancy należy wybrać niepowtarzające się nazwy miast, w tym celu należy skorzystać z wyrażenia SQL zawierającego klauzulę

A. CHECK
B. UNIQUE
C. HAVING
D. DISTINCT

Pytanie z egzaminu CKE, czerwiec 2022 (arkusz EE.09-SG-22.06).

W tym przypadku właściwą klauzulą jest DISTINCT, ponieważ służy ona do usuwania duplikatów z wyniku zapytania SELECT. Jeżeli w tabeli mieszkancy kilka osób mieszka w tym samym mieście, zwykłe zapytanie SELECT miasto FROM mieszkancy; zwróci nazwę miasta tyle razy, ile rekordów ją zawiera. Natomiast SELECT DISTINCT miasto FROM mieszkancy; pokaże każdą nazwę miasta tylko raz, np. Warszawa, Kraków, Gdańsk bez powtórek. To jest bardzo praktyczne przy raportach, filtrach w panelu administracyjnym albo listach wyboru w formularzach, gdzie nie chcemy mieć dziesięciu identycznych pozycji. Moim zdaniem DISTINCT to jedna z tych klauzul SQL, które warto od razu kojarzyć z hasłem „unikalne wyniki”. Dobra praktyka jest taka, żeby stosować ją świadomie, bo baza danych musi porównać rekordy i czasem posortować lub zgrupować dane wewnętrznie, więc przy dużych tabelach może to mieć wpływ na wydajność. Mimo to w standardowym SQL właśnie DISTINCT jest poprawnym i czytelnym sposobem na pobranie niepowtarzających się wartości z kolumny.
W tym pytaniu łatwo pomylić kilka słów kluczowych SQL, bo wszystkie brzmią dość „bazodanowo” i kojarzą się z kontrolą danych. UNIQUE rzeczywiście ma związek z unikalnością, ale najczęściej używa się go przy definiowaniu ograniczeń tabeli albo indeksów, np. żeby w kolumnie email nie dało się wpisać dwóch takich samych adresów. To działa na poziomie struktury danych i integralności bazy, a nie jako typowa klauzula do filtrowania wyniku zapytania SELECT. W praktyce, gdy chcesz tylko wyświetlić listę miast bez powtórzeń, nie tworzysz ograniczenia UNIQUE na kolumnie miasto, bo wiele osób może przecież mieszkać w tym samym mieście.

CHECK również nie pasuje do tego zadania. Ta klauzula służy do sprawdzania warunków poprawności danych, na przykład wiek >= 18 albo cena > 0. Jest to mechanizm walidacji przy wstawianiu lub modyfikowaniu rekordów, nie narzędzie do wybierania niepowtarzalnych wartości. HAVING z kolei bywa mylone z WHERE albo DISTINCT, bo pojawia się w zapytaniach agregujących. Używa się go do filtrowania grup po GROUP BY, na przykład miasta, w których liczba mieszkańców w tabeli jest większa niż 100. Samo HAVING nie oznacza jednak „usuń duplikaty”. Typowy błąd myślowy polega tu na tym, że ktoś widzi słowo związane z ograniczaniem danych i zakłada, że chodzi o wynik zapytania. A w SQL trzeba odróżniać ograniczenia tabeli, walidację danych, filtrowanie grup i eliminowanie duplikatów. Do tego ostatniego, w przenośnym i czytelnym SQL, służy SELECT DISTINCT.

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.