KWALIFIKACJA INF3 - STYCZEŃ 2018

PYTANIE NR 19.
W języku SQL dla dowolnych zestawów danych w tabeli Uczniowie, aby wybrać rekordy, które zawierają wyłącznie uczennice o imieniu "Aleksandra", urodzone po roku "1998", należy zapisać zapytanie
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne zapytanie musi spełnić jednocześnie dwa warunki: imię równe "Aleksandra" oraz rok urodzenia większy niż 1998, dlatego używa się operatora AND i porównania >. Warianty z OR zwrócą też rekordy spełniające tylko jeden warunek, a z < wybiorą roczniki wcześniejsze.

Pełne wyjaśnienie:

W SQL klauzula WHERE służy do filtrowania wierszy tabeli, czyli wyboru tylko tych rekordów, które spełniają podane kryteria. W tym zadaniu kryteria są dwa:

  • imię ma być dokładnie równe "Aleksandra",
  • rok urodzenia ma być po 1998, czyli większy niż 1998.

Skoro rekord ma dotyczyć osoby, która spełnia oba wymagania jednocześnie, warunki trzeba połączyć operatorem logicznym AND. To sprawia, że do wyniku trafią tylko te wiersze, dla których pierwszy i drugi warunek są prawdziwe równocześnie.

Zapytanie z warunkiem "imie = 'Aleksandra' AND rok_urodzenia > 1998" jest poprawne, bo dokładnie odzwierciedla treść zadania: wybiera wyłącznie Aleksandry urodzone po 1998 roku.

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

  • Warianty z OR są zbyt szerokie: zwracają rekordy, które spełniają tylko jeden z warunków (np. każdą Aleksandrę niezależnie od roku albo każdą osobę z rokiem > 1998 niezależnie od imienia).
  • Wariant z porównaniem < 1998 wybiera roczniki wcześniejsze, czyli zaprzecza wymaganiu "urodzone po roku 1998".

W praktyce warto pamiętać także o typach danych: jeśli rok_urodzenia jest liczbą, porównanie powinno być liczbowe (bez traktowania wartości jak tekstu). Składnia zapisu literałów tekstowych i identyfikatorów może się różnić między DBMS, ale sens logiczny (AND oraz kierunek nierówności) pozostaje kluczowy na egzaminie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula WHERE filtruje wiersze zwracane przez SELECT. Określasz w niej warunki (np. równość, nierówność), a wynik zawiera tylko rekordy spełniające te kryteria. Bez WHERE zapytanie zwykle zwraca wszystkie wiersze tabeli.
Operator AND wymaga, aby wszystkie połączone warunki były prawdziwe jednocześnie. Jeśli choć jeden warunek jest fałszywy, dany rekord nie trafi do wyniku. Stosuj AND, gdy chcesz zawęzić wyniki do "spełniających A i B".
Operator OR oznacza, że wystarczy spełnienie co najmniej jednego warunku. Używa się go, gdy dopuszczasz kilka alternatywnych kryteriów, np. imię "Ala" lub "Ola". W zadaniach typu "wyłącznie" OR zwykle daje zbyt wiele wyników.
Sformułowanie "po 1998 roku" oznacza lata późniejsze, czyli większe wartości roku: 1999, 2000 itd. Dlatego stosuje się porównanie > 1998. Znak < 1998 wybrałby osoby urodzone przed 1998 (np. 1997), czyli odwrotnie do treści.
Wartości tekstowe zapisuje się jako literały, najczęściej w apostrofach (np. 'Aleksandra'). W niektórych silnikach cudzysłowy mogą mieć inne znaczenie (np. identyfikatory). Na egzaminie najważniejsze jest rozpoznanie warunku równości dla tekstu i poprawne połączenie warunków.
To zależy od typu kolumny. Jeśli rok_urodzenia jest liczbą, porównanie powinno być liczbowe (1998). Jeśli jest tekstem, porównanie może działać inaczej w zależności od reguł porównywania napisów. W projektach baz danych rok zwykle przechowuje się liczbowo.
Potrzebujesz kolumny określającej płeć (np. plec), a potem dodajesz warunek w WHERE, np. plec = 'K' lub podobny zapis zgodny z bazą. Sam warunek na imię nie gwarantuje płci, bo to zależy od danych w tabeli.
Najczęściej myli się logikę: używa się OR zamiast AND, przez co wynik zawiera rekordy spełniające tylko jeden warunek. Drugi typ błędu to zły znak nierówności (< zamiast >) oraz brak świadomości, że nawiasy zmieniają kolejność łączenia warunków.
Nawiasy są potrzebne, gdy mieszasz AND i OR i chcesz narzucić kolejność obliczania logicznego. Bez nawiasów silnik stosuje ustalone priorytety operatorów, co może dać inny wynik niż zamierzony. W prostym "A AND B" nawiasy nie są konieczne.
Najlepiej pracować na małej tabeli testowej i pisać kilka wariantów WHERE: równość, zakresy (>, <), AND/OR, a potem sprawdzać, które rekordy faktycznie wracają. Dobre ćwiczenie to: najpierw przewidzieć wynik "na papierze", a dopiero potem uruchomić zapytanie.
info

Statystycznie 84% uczniów zna prawidłową odpowiedź. średnio łatwe

Według specjalistów z branży: "Poprawne zapytanie musi spełnić jednocześnie dwa warunki: imię równe "Aleksandra" oraz rok urodzenia większy niż 1998, dlatego używa się operatora AND i porównania &gt;."

Źródła:

  • MySQL 8.0 Reference Manual: SELECT Syntax (WHERE clause), https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-02-28)
  • PostgreSQL Documentation: 9.2. The WHERE Clause, https://www.postgresql.org/docs/current/queries-table-expressions.html#QUERIES-WHERE (dostęp: 2026-02-28)
  • SQLite Documentation: SELECT (The WHERE clause), https://www.sqlite.org/lang_select.html (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja wybranego DBMS (MySQL/PostgreSQL/SQLite): SELECT i WHERE
  • Ćwiczenia z logiki warunków w SQL (AND/OR, nawiasy)
  • Zadania praktyczne na tabelach z danymi (filtrowanie po polach tekstowych i liczbowych)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego