KWALIFIKACJA INF2 + INF3 - CZERWIEC 2012

PYTANIE NR 27.
W bazie danych utworzono kwerendę SQL: SELECT nazwisko, imie FROM pracownicy WHERE nr_ewid>1000 ORDER BY nazwisko. Jakie kolumny będzie ona zawierała i jak będzie posortowana tabela uzyskana w wyniku jej działania?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapytanie SELECT nazwisko, imie zwraca wyłącznie dwie kolumny: nazwisko i imię. Klauzula WHERE nr_ewid>1000 filtruje rekordy do pracowników z numerem ewidencyjnym większym niż 1000. ORDER BY nazwisko sortuje wynik według nazwiska; bez podania kierunku sortowanie jest domyślnie rosnące.

Pełne wyjaśnienie:

Zapytanie SQL składa się z trzech kluczowych części, z których każda odpowiada za inny etap przetwarzania danych.

  • SELECT nazwisko, imie – to tzw. projekcja, czyli wskazanie, jakie kolumny mają znaleźć się w wyniku. Oznacza to, że w tabeli wynikowej pojawią się tylko kolumny nazwisko oraz imie. Nawet jeśli w warunku użyto pola nr_ewid, nie zostanie ono zwrócone, bo nie znajduje się na liście SELECT.
  • FROM pracownicy – określa źródło danych, czyli tabelę, z której pobierane są rekordy.
  • WHERE nr_ewid > 1000 – to selekcja wierszy (filtrowanie). Warunek z operatorem > przepuszcza wyłącznie te rekordy, w których wartość w kolumnie nr_ewid jest większa niż 1000. Nie ma tu żadnego warunku dotyczącego nazwiska ani imienia, więc zapytanie nie ogranicza wyników do "określonego nazwiska".
  • ORDER BY nazwisko – odpowiada za sortowanie wyników. Ponieważ nie podano DESC, w typowym SQL domyślnym kierunkiem jest sortowanie rosnące (od A do Z) według kolumny nazwisko.

Dlatego poprawny opis wyniku musi łączyć trzy elementy: (1) jakie kolumny są zwracane (nazwisko i imię), (2) jaki jest filtr wierszy (nr_ewid > 1000) oraz (3) po czym i w jakim kierunku następuje sortowanie (po nazwisku rosnąco).

Typowe błędne odpowiedzi wynikają z mieszania pojęć: nazwa tabeli pracownicy nie jest kolumną, a sortowanie malejące wymaga jawnego użycia DESC. Inne pomyłki to dopisywanie nieistniejących warunków (np. "o określonym nazwisku") albo sortowanie po innym polu niż podane w ORDER BY.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula SELECT określa, jakie kolumny (pola) mają zostać zwrócone w wyniku zapytania. Jeśli wpiszesz SELECT nazwisko, imie, wynik będzie zawierał tylko te dwie kolumny, nawet gdy tabela ma ich więcej.
Warunek w WHERE filtruje wiersze. Zostaną wybrane tylko te rekordy, dla których wartość w kolumnie nr_ewid jest większa niż 1000. Rekordy z nr_ewid równym 1000 lub mniejszym nie pojawią się w wyniku.
Nie. Kolumna w WHERE służy do filtrowania wierszy, ale nie musi być zwracana. W tym zadaniu nr_ewid wpływa na to, które osoby trafią do wyniku, lecz nie pojawia się w tabeli wynikowej, bo nie jest w SELECT.
W wielu systemach SQL, gdy w ORDER BY nie podasz kierunku, domyślnie stosowane jest sortowanie rosnące (od najmniejszej do największej wartości). Dlatego ORDER BY nazwisko zwykle oznacza porządek alfabetyczny A–Z.
Aby sortować malejąco, dopisz DESC po nazwie kolumny. Przykład: ORDER BY nazwisko DESC. Bez tego dodatku zapytanie najczęściej posortuje rosnąco, co jest częstą pułapką na egzaminach.
Taki zapis wprowadza sortowanie wielopolowe: najpierw według nazwisko, a gdy kilka osób ma to samo nazwisko, wtedy dodatkowo według imie. To typowy sposób stabilnego porządkowania list w aplikacjach i raportach.
Częste błędy to: mylenie nazwy tabeli z nazwą kolumny, dopisywanie nieistniejących warunków (np. "określone nazwisko"), zakładanie sortowania malejącego bez DESC oraz przekonanie, że WHERE określa kolumny wyniku zamiast wierszy.
W sensie praktycznym wynik SELECT jest zestawem wierszy i kolumn, który wygląda jak tabela. W DBMS to wynik kwerendy (zbiór rekordów), który aplikacja może wyświetlić jako tabelę, użyć do raportu lub przekazać dalej (np. w podzapytaniu).
Spójrz na listę po słowie SELECT – to dokładnie kolumny wyniku (o ile nie ma funkcji agregujących lub aliasów). Warunki w WHERE i sortowanie w ORDER BY nie dodają kolumn, tylko ograniczają i porządkują rekordy.
Ćwicz czytanie i pisanie krótkich zapytań: SELECT z WHERE i ORDER BY, potem dodaj JOIN oraz funkcje agregujące. Dobrą metodą jest przewidywanie wyniku na kartce i dopiero potem uruchomienie zapytania w DBMS.
info

To pytanie poprawnie rozwiązuje 67% zdających egzamin. średnie

Specjaliści zwracają uwagę: "Zapytanie SELECT nazwisko, imie zwraca wyłącznie dwie kolumny: nazwisko i imię."

Źródła:

  • PostgreSQL Documentation: "SELECT" (SQL Commands) – opis składni SELECT, WHERE i ORDER BY, https://www.postgresql.org/docs/current/sql-select.html (dostęp: 02.03.2026)
  • MySQL 8.0 Reference Manual: "SELECT Statement" – sekcje dotyczące WHERE oraz ORDER BY, https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 02.03.2026)
  • SQLite Documentation: "SELECT" – opis projekcji kolumn i sortowania ORDER BY, https://sqlite.org/lang_select.html (dostęp: 02.03.2026)

Materiały:

  • Dokumentacja wybranego DBMS (np. PostgreSQL lub MySQL): rozdział o SELECT/WHERE/ORDER BY
  • Ćwiczenia praktyczne: pisanie zapytań SELECT z filtrowaniem i sortowaniem na przykładowej bazie
  • Materiały do INF.3 z części dotyczącej baz danych i języka SQL

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego