KWALIFIKACJA INF3 - CZERWIEC 2016

PYTANIE NR 16.
Dana jest tabela psy o polach: imie, rasa, telefonwlasciciela, rokszczepienia. Aby wyszukać telefony właścicieli, których psy były szczepione przed 2015 rokiem, należy użyć polecenia SQL
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne zapytanie musi zwracać tylko telefony właścicieli, więc w SELECT podaje się kolumnę telefonwlasciciela. Warunek "przed 2015" oznacza lata mniejsze od 2015, więc w WHERE używa się rokszczepienia < 2015. Nazwy pól muszą być identyczne jak w definicji tabeli.

Pełne wyjaśnienie:

W tym zadaniu trzeba zbudować zapytanie SQL, które spełnia dwa warunki jednocześnie: (1) zwraca właściwą kolumnę oraz (2) filtruje rekordy po właściwym kryterium.

Dlaczego poprawne jest: SELECT telefonwlasciciela FROM psy WHERE rokszczepienia < 2015;

  • SELECT telefonwlasciciela – część SELECT wskazuje, jakie dane mają zostać zwrócone. Ponieważ pytanie prosi o telefony właścicieli, zwracamy wyłącznie kolumnę telefonwlasciciela.
  • FROM psy – dane pochodzą z tabeli psy.
  • WHERE rokszczepienia < 2015 – klauzula WHERE filtruje wiersze. "Szczepione przed 2015 rokiem" oznacza rocznik szczepienia 2014 i wcześniejsze, czyli wartości mniejsze od 2015.
  • Zgodność nazw kolumn – w SQL identyfikatory kolumn muszą odpowiadać definicji tabeli; użycie innej nazwy (np. z podkreśleniem lub literówką) zwykle kończy się błędem wykonania.

Dlaczego pozostałe propozycje są błędne:

  • SELECT imie, rasa FROM psy WHERE rokszczepienia > 2015; – zwraca imię i rasę zamiast telefonów, a ponadto filtruje lata po 2015 (operator >), czyli odwrotnie niż w treści.
  • SELECT psy FROM rokszczepienia < 2015; – ma niepoprawną składnię: brakuje klauzuli FROM z nazwą tabeli, a w SELECT podano nazwę tabeli zamiast kolumny/kolumn. Taki zapis w typowym SQL nie spełnia celu zapytania.
  • SELECT telefonwlasciciela FROM psy WHERE rokszczepienia > 2015; – zwraca co prawda telefony, ale warunek jest przeciwny do wymaganego: wybiera rekordy z rokiem szczepienia większym od 2015.

Wskazówka egzaminacyjna: najpierw podkreśl w treści, co ma być zwrócone (kolumna w SELECT), a dopiero potem jak filtrować (warunek w WHERE). To ogranicza ryzyko pomylenia operatorów < i >.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula SELECT określa, jakie kolumny (pola) mają zostać zwrócone w wyniku zapytania. Jeśli potrzebujesz tylko numerów telefonów, w SELECT podajesz wyłącznie kolumnę z telefonem, a nie wszystkie dane z tabeli.
WHERE filtruje wiersze tabeli według warunku logicznego. Do wyniku trafiają tylko te rekordy, które spełniają podane porównanie, np. rokszczepienia < 2015. Bez WHERE zapytanie zwróci wszystkie wiersze.
W SQL nazwy kolumn są identyfikatorami i muszą być zgodne z definicją tabeli. Zmiana choćby jednego znaku (np. podkreślenie, literówka) zwykle powoduje błąd "nieznana kolumna". To częsty błąd w zadaniach egzaminacyjnych.
"Przed 2015" oznacza lata mniejsze od 2015, więc używa się operatora <, np. rokszczepienia < 2015. Operator > 2015 oznacza "po 2015", czyli odwrotny sens.
Nie. Warunek rokszczepienia < 2015 wybierze wartości 2014, 2013 itd. Jeśli chcesz uwzględnić także 2015, użyj <= 2015. Na egzaminie zwracaj uwagę, czy jest "przed" czy "dołącznie".
Najczęściej: (1) pomylenie < z >, (2) niezgodność nazw kolumn z treścią zadania, (3) brak FROM, (4) zwracanie złych kolumn w SELECT (np. imię i rasa zamiast telefonu).
Porównaj treść pytania z częścią SELECT. Jeśli pytanie prosi o telefony, w SELECT musi być kolumna telefonu. Dodatkowo upewnij się, że nazwa kolumny jest identyczna jak w opisie tabeli (bez zamiany znaków, kolejności liter itp.).
Gdy jeden właściciel może mieć kilka psów, zapytanie może zwrócić ten sam numer telefonu wielokrotnie. Wtedy można użyć DISTINCT, aby usunąć duplikaty, np. SELECT DISTINCT telefonwlasciciela .... To nie zawsze jest wymagane w treści zadania.
Do sortowania używa się ORDER BY, np. po numerze telefonu: ORDER BY telefonwlasciciela. Sortowanie nie zmienia tego, które rekordy są wybrane, tylko kolejność ich wyświetlenia. Dodaje się je na końcu zapytania.
To zależy od systemu bazy danych i sposobu tworzenia identyfikatorów. W praktyce bez cytowania identyfikatorów wiele DBMS traktuje je nieczułe na wielkość liter, ale różnice znaków (np. podkreślenie, literówki) pozostają istotne. Najbezpieczniej trzymać się dokładnych nazw z zadania.
info

Statystycznie 67% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Poprawne zapytanie musi zwracać tylko telefony właścicieli, więc w SELECT podaje się kolumnę telefonwlasciciela."

Źródła:

  • PostgreSQL Documentation: SELECT, rozdział "Queries", https://www.postgresql.org/docs/current/sql-select.html (dostęp: 2026-03-13)
  • MySQL 8.0 Reference Manual: SELECT Statement, https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-03-13)
  • SQLite Documentation: SELECT, https://sqlite.org/lang_select.html (dostęp: 2026-03-13)

Materiały:

  • Dokumentacja DBMS (np. PostgreSQL/MySQL/SQLite) dotycząca instrukcji SELECT
  • Ćwiczenia z filtracji danych w SQL (WHERE, operatory porównania)
  • Zadania egzaminacyjne INF.3 z działu: bazy danych i zapytania

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego