KWALIFIKACJA INF3 - CZERWIEC 2022

PYTANIE NR 15.
W tabeli mieszkańcy z polami id, imie, nazwisko, ulica, numer, czynsz (wartość całkowita) należy wybrać dane osób mieszkających na ulicy Mickiewicza pod numerami 71, 72, 80, których czynsz jest niższy niż
1000 zł. Klauzula WHERE do zapytania będzie miała postać
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawna klauzula musi jednocześnie spełniać trzy warunki: ulica równa "Mickiewicza", numer w zbiorze (71, 72, 80) oraz czynsz < 1000. Użycie AND zawęża wynik do osób spełniających wszystkie kryteria naraz, a IN jest właściwe dla listy konkretnych numerów.

Pełne wyjaśnienie:

Klauzula WHERE służy do filtrowania rekordów i zwraca tylko te wiersze, dla których całe wyrażenie logiczne jest prawdziwe.

W tym zadaniu wymagania są jednoczesne: osoba ma mieszkać na wskazanej ulicy, pod jednym z trzech numerów oraz mieć czynsz poniżej progu. Dlatego poprawny zapis musi łączyć te trzy warunki spójnikiem AND:

ulica = 'Mickiewicza' AND numer IN (71, 72, 80) AND czynsz < 1000.

Odpowiedź z fragmentem "... OR czynsz < 1000" jest błędna, ponieważ operator OR powoduje, że do wyniku trafią także osoby, które nie mieszkają pod wskazanymi adresami, ale mają czynsz poniżej 1000 (warunek "czynsz < 1000" sam "otwiera" filtr).

Wariant oparty wyłącznie na OR ("ulica ... OR numer ... OR czynsz ...") jest jeszcze mniej restrykcyjny: wystarczy spełnić dowolny z warunków, więc wynik będzie zawierał wiele niepożądanych rekordów.

Wariant z przedziałem numerów ("numer > 70 AND numer < 81") nie jest równoważny liście (71, 72, 80), bo obejmuje także np. 73–79. Dodatkowo połączenie z "OR czynsz < 1000" znów rozszerza wynik o osoby spoza adresu. Na egzaminie warto nawykowo sprawdzać: czy wszystkie wymagania z treści są połączone AND oraz czy lista wartości jest realizowana przez IN.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
WHERE ogranicza wynik zapytania do rekordów spełniających podany warunek logiczny. Dla każdego wiersza baza sprawdza wyrażenie (np. porównania i operatory AND/OR) i zwraca tylko te wiersze, dla których warunek jest prawdziwy.
IN sprawdza, czy wartość kolumny należy do podanej listy. Używa się go, gdy chcesz dopuścić kilka konkretnych wartości (np. numery 71, 72, 80) bez pisania wielu porównań połączonych OR.
AND wymaga spełnienia wszystkich kryteriów jednocześnie, więc wynik jest dokładnie taki, jak w treści zadania. OR dopuszcza spełnienie tylko jednego z warunków, przez co zapytanie zwróci dodatkowe osoby, np. z inną ulicą, ale z czynszem < 1000.
Jeśli dasz "... OR czynsz < 1000", to każdy rekord z czynszem poniżej 1000 przejdzie filtr niezależnie od ulicy i numeru. W praktyce raport/wykaz będzie "za szeroki" i nie będzie odpowiadał kryteriom z treści.
Najczęściej myli się spójnik logiczny (wstawia OR zamiast AND), nie zauważa się, że OR "psuje" filtr na końcu warunku, oraz zastępuje się listę IN przedziałem numerów, który obejmuje więcej wartości niż wymagane w zadaniu.
Nie. Przedział "> 70 i < 81" obejmuje wszystkie numery od 71 do 80, czyli także 73–79. IN (71,72,80) wybiera tylko trzy konkretne wartości. To inna logika selekcji rekordów.
Wypisz wymagania jako listę (np. ulica, numer, próg czynszu) i sprawdź, czy każde z nich występuje w WHERE oraz czy są połączone AND (jeśli mają obowiązywać jednocześnie). Dla listy wartości wybierz IN.
Tak, literały tekstowe zapisuje się zwykle w apostrofach, np. 'Mickiewicza'. Bez tego wiele baz potraktuje zapis jako nazwę kolumny/identyfikator i zgłosi błąd lub zinterpretuje go niezgodnie z intencją.
Nawiasy są potrzebne, gdy mieszasz AND i OR i chcesz jednoznacznie wymusić kolejność oceny. Bez nawiasów łatwo o błąd logiczny i zbyt szeroki wynik. W zadaniach egzaminacyjnych nawiasy pomagają uniknąć pomyłek.
Ćwicz na małych tabelach: wymyśl kryteria i zapisuj je w WHERE, a potem przewiduj, które rekordy powinny przejść filtr. Szczególnie trenuj rozróżnianie AND vs OR oraz stosowanie IN dla list i operatorów porównań dla progów liczbowych.
info

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

Specjaliści zwracają uwagę: "Poprawna klauzula musi jednocześnie spełniać trzy warunki: ulica równa "Mickiewicza", numer w zbiorze (71, 72, 80) oraz czynsz &lt; 1000."

Źródła:

  • PostgreSQL Documentation: 9.2. The WHERE Clause (SELECT), https://www.postgresql.org/docs/current/queries-table-expressions.html#QUERIES-WHERE - dostęp 2026-02-27
  • MySQL 8.0 Reference Manual: 13.2.10 SELECT Statement (WHERE clause, logical operators), https://dev.mysql.com/doc/refman/8.0/en/select.html - dostęp 2026-02-27
  • SQLite Documentation: WHERE clause and expression evaluation (language reference), https://www.sqlite.org/lang_expr.html - dostęp 2026-02-27

Materiały:

  • Dokumentacja wybranego systemu DBMS (sekcja o SELECT/WHERE, AND/OR, IN)
  • Ćwiczenia z logiki w SQL: zadania na łączenie warunków oraz analizę wyników
  • Materiały kursowe z podstaw baz danych relacyjnych i zapytań

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego