KWALIFIKACJA INF3 - STYCZEŃ 2020

PYTANIE NR 16.
Które dane z 8 rekordów wpisanych do tabeli zwierzeta zostaną wyświetlone w wyniku podanego poniżej zapytania SQL?

SELECT imie FROM zwierzeta WHERE rodzaj = 2 AND szczepienie = 2016;

Ilustracja przedstawia tabelę z danymi dotyczącymi zwierząt, co jest związane z egzaminem zawodowym dla technika programisty
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapytanie wybiera tylko kolumnę imie z tabeli zwierzeta, ale wyłącznie dla rekordów spełniających jednocześnie dwa warunki: rodzaj = 2 oraz szczepienie = 2016. W wyniku zostaną więc pokazane imiona pasujące do obu kryteriów, czyli "Dika" i "Fuks".

Pełne wyjaśnienie:

W zapytaniu:

SELECT imie FROM zwierzeta WHERE rodzaj = 2 AND szczepienie = 2016;

klauzula SELECT imie oznacza, że wynikiem mają być wyłącznie wartości z kolumny imie, a nie całe rekordy. O tym, które rekordy "wejdą" do wyniku, decyduje część WHERE.

Warunek w WHERE ma postać:

rodzaj = 2 AND szczepienie = 2016

Operator AND jest koniunkcją logiczną, więc rekord zostanie zwrócony tylko wtedy, gdy oba porównania są prawdziwe jednocześnie. To znaczy:

  • rekord musi mieć wartość rodzaj równą 2,
  • oraz wartość szczepienie równą 2016.

Jeśli rekord spełnia tylko jeden z tych warunków, nie zostanie pokazany w wyniku. Dlatego odpowiedź zawierająca dodatkowe imiona (np. takie, które pasują tylko do jednego kryterium) jest błędna.

Poprawny wynik to "Dika, Fuks", ponieważ są to imiona rekordów, które jednocześnie mają rodzaj = 2 i szczepienie = 2016.

Dlaczego pozostałe propozycje są niepoprawne:

  • "Figaro, Dika, Fuks" — zawiera "Figaro", czyli rekord niespełniający co najmniej jednego z warunków (w przeciwnym razie znalazłby się w poprawnym zestawie).
  • "Fafik, Brutus, Dika, Fuks" — to typowy błąd polegający na potraktowaniu AND jak OR albo pominięciu jednego z filtrów; wynik robi się wtedy zbyt szeroki.
  • "Anna Kowalska, Jan Nowak" — te wartości nie pasują do kolumny imie zwierzęcia w kontekście tabeli zwierzeta; to dystraktor oparty na skojarzeniu z danymi osobowymi.

Wskazówka egzaminacyjna: zawsze sprawdź, czy odpowiedzi dotyczą dokładnie tej kolumny, która jest w SELECT, i czy uwzględniają wszystkie warunki w WHERE (szczególnie gdy występuje AND).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula WHERE filtruje rekordy, które mają trafić do wyniku zapytania. Do dalszego etapu (i do wyświetlenia) przechodzą tylko te wiersze tabeli, dla których warunek w WHERE jest spełniony. Bez WHERE zapytanie zwykle zwraca wszystkie rekordy.
Operator AND wymaga spełnienia wszystkich połączonych warunków jednocześnie. Jeśli choć jeden warunek jest fałszywy, cały warunek połączony AND jest fałszywy i rekord nie pojawi się w wyniku. To przeciwieństwo podejścia "wystarczy jeden warunek".
Wynik zapytania zależy od listy kolumn po słowie SELECT. Gdy podasz tylko imie, baza zwróci tylko tę jedną kolumnę. Żeby dostać cały rekord, trzeba wskazać wiele kolumn albo użyć SELECT * (choć w praktyce lepiej wybierać tylko potrzebne pola).
Najczęstszy błąd to pomylenie znaczenia operatorów: traktowanie AND jak OR, co daje za dużo wyników. Drugi typowy problem to nieuwzględnienie jednego z warunków (np. filtrujesz tylko po roku, a zapominasz o rodzaju). Warto czytać warunek "na głos".
To znaczy, że po podstawieniu wartości z danego wiersza tabeli do wyrażenia w WHERE, całe wyrażenie logiczne przyjmuje wartość prawda. Tylko takie wiersze są wybierane. Jeśli wyrażenie jest fałszywe lub nieokreślone (np. przez NULL), rekord zwykle nie trafia do wyniku.
Wynik może być pusty, jeśli żaden rekord w tabeli nie spełnia warunków z WHERE. Składnia jest wtedy poprawna, ale dane nie pasują do kryteriów. Na egzaminie oznacza to, że trzeba uważnie porównać każdy rekord z każdym warunkiem, a nie zakładać, że "coś na pewno wyjdzie".
Praktyczna metoda to testowanie krokami: najpierw uruchomić zapytanie z jednym warunkiem (np. tylko rodzaj = 2), potem dodać drugi. Jeśli po dodaniu drugiego liczba wyników spada do zera, to znaczy, że drugi filtr jest "wąskim gardłem" lub dane go nie spełniają.
Logicznie kolejność w AND nie zmienia znaczenia (warunki muszą być spełnione wszystkie). W praktyce optymalizator bazy może je wykonywać w innej kolejności dla wydajności. Na egzaminie najważniejsze jest, że wynik powinien być taki sam niezależnie od kolejności.
Trzeba porównać każdy wymieniony element z warunkami w WHERE. Jeśli choć jeden z warunków nie pasuje (np. inny rok, inny rodzaj), to taka pozycja nie powinna być w wyniku. Odpowiedzi "z nadmiarem" często wynikają z pomylenia AND z OR.
Ćwicz na małych tabelach (5–10 rekordów) i zapisuj, które wiersze przechodzą przez filtr. Utrwal różnicę AND/OR, zwracanie pojedynczej kolumny oraz wpływ typów danych. Dobra strategia to "odczyt tabeli → sprawdź warunki → wypisz tylko wybrane kolumny".
info

Statystycznie 52% uczniów zna prawidłową odpowiedź. trudne

Specjaliści zwracają uwagę: "Zapytanie wybiera tylko kolumnę imie z tabeli zwierzeta, ale wyłącznie dla rekordów spełniających jednocześnie dwa warunki: rodzaj = 2 oraz szczepienie = 2016."

Źródła:

  • MySQL 8.0 Reference Manual: SELECT Statement (syntax and WHERE clause) https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-03-01)
  • PostgreSQL Documentation: SELECT command (WHERE and boolean operators) https://www.postgresql.org/docs/current/sql-select.html (dostęp: 2026-03-01)
  • SQLite Documentation: SELECT (WHERE clause) https://www.sqlite.org/lang_select.html (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja wybranego silnika SQL (składnia SELECT i WHERE)
  • Ćwiczenia z filtrów AND/OR na prostych tabelach testowych
  • Zadania egzaminacyjne INF.* dotyczące zapytań SELECT

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego