KWALIFIKACJA INF3 - WRZESIEŃ 2015

PYTANIE NR 15.
Baza danych zawiera tabelę artykuły z polami: nazwa, typ, producent, cena. Aby wyświetlić wszystkie nazwy artykułów wyłącznie typu pralka, dla których cena jest z przedziału 1 000 PLN i 1 500 PLN, należy zastosować polecenie
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne jest zapytanie z warunkiem typ='pralka' połączonym operatorem AND z filtrem przedziału cen. BETWEEN 1000 AND 1500 jest inkluzywne (obejmuje 1000 i 1500). Warianty z OR zwracają za dużo rekordów, a zapis z > i < odcina wartości brzegowe.

Pełne wyjaśnienie:

Zapytanie ma zwrócić nazwy artykułów spełniających jednocześnie dwa warunki:

  • pole typ ma wartość 'pralka',
  • pole cena mieści się w zakresie od 1000 do 1500.

Dlatego w klauzuli WHERE musi wystąpić operator AND, który wymaga spełnienia obu kryteriów naraz. Poprawny zapis wykorzystuje BETWEEN 1000 AND 1500, czyli test przynależności do przedziału.

W SQL operator BETWEEN jest inkluzywny, co oznacza, że warunek obejmuje wartości brzegowe. W praktyce jest to skrót równoważny zapisowi:

cena >= 1000 AND cena <= 1500

To ważne, bo często studenci błędnie zakładają, że "pomiędzy" wyklucza granice.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • Zapytanie z OR (np. typ='pralka' OR cena BETWEEN ...) zwróci wszystkie pralki niezależnie od ceny oraz dodatkowo wszystkie produkty w przedziale cenowym niezależnie od typu. To nie jest "wyłącznie typ pralka" w danym zakresie.
  • Wariant typ='pralka' OR (cena >= 1000 AND cena <= 1500) ma ten sam błąd logiczny: alternatywa poszerza wynik zamiast go zawężać do wspólnej części warunków.
  • Wariant z cena > 1000 AND cena < 1500 tworzy przedział ekskluzywny, więc odrzuci rekordy z ceną dokładnie 1000 lub 1500. Skoro wymagany jest przedział cenowy, typowo rozumiany jako obejmujący granice w SQL, ten zapis nie spełnia warunku.

Wskazówka egzaminacyjna: gdy w treści masz dwa kryteria, szukaj w WHERE operatora AND. Gdy występuje przedział, sprawdź czy ma być inkluzywny (BETWEEN / >= <=) czy ekskluzywny (> <).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To znaczy, że warunek uwzględnia wartości graniczne. Przykład: cena BETWEEN 1000 AND 1500 zwraca rekordy z ceną 1000, 1200 i 1500. Jest to równoważne zapisowi cena >= 1000 AND cena <= 1500.
WHERE filtruje wiersze tabeli, pozostawiając tylko te rekordy, które spełniają podane warunki logiczne. To podstawowy mechanizm wyszukiwania danych w SQL, np. po typie produktu, zakresie cen lub producencie.
Bo wymagane są dwa warunki jednocześnie: typ ma być "pralka" i cena ma być w zakresie 1000–1500. AND zawęża wynik do części wspólnej warunków. OR rozszerza wynik, bo wystarczy spełnić tylko jeden z warunków.
W typowym użyciu nie ma różnicy w wyniku: BETWEEN 1000 AND 1500 jest skrótem dla >= 1000 AND <= 1500. Różnica jest głównie w czytelności i w tym, że zapis jawny łatwiej modyfikować, gdy chcesz wykluczyć jedną granicę.
Składniowo jest poprawny, ale tworzy przedział ekskluzywny, czyli nie obejmuje 1000 ani 1500. Jeśli wymagany jest przedział obejmujący granice (jak w BETWEEN), to taki zapis zwróci za mało wyników i będzie niezgodny z intencją zadania.
Gdy sprawdzasz prosty, ciągły zakres wartości (np. cena, data, numer). BETWEEN bywa bardziej czytelny i krótszy. Dwa porównania (>= i <=) stosuje się częściej, gdy chcesz świadomie wykluczyć jedną z granic lub budujesz bardziej złożoną logikę.
Najczęstsze to: użycie OR zamiast AND (wynik zbyt szeroki), brak nawiasów przy mieszaniu AND/OR (zła kolejność obliczeń) oraz założenie, że warunki "same się domyślą". Warto czytać warunek jako zdanie logiczne i sprawdzać przypadki brzegowe.
Tak. Nawiasy wymuszają kolejność ewaluacji warunków. Bez nawiasów silnik SQL stosuje własny priorytet operatorów (zwykle AND wiąże silniej niż OR), co może dać inny wynik niż zamierzasz. W złożonych filtrach nawiasy poprawiają też czytelność.
Najlepiej przygotować dane testowe (w tym przypadki brzegowe, np. 1000 i 1500), uruchomić zapytanie i porównać wynik z oczekiwaniami. Dobrą praktyką jest też dopisanie dodatkowych kolumn w SELECT (np. cena), aby szybciej zweryfikować filtr.
Ćwicz krótkie zapytania z WHERE: porównania, BETWEEN, IN, LIKE oraz łączenie warunków AND/OR. Zawsze testuj na przykładach i sprawdzaj przypadki brzegowe. W nauce pomagają też tabele prawdy dla AND/OR i świadome używanie nawiasów.
info

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

W praktyce zawodowej kluczowe jest to, że poprawne jest zapytanie z warunkiem typ='pralka' połączonym operatorem AND z filtrem przedziału cen.

Źródła:

  • ISO/IEC 9075 (SQL) — standard definiujący składnię i semantykę operatora BETWEEN (inkluzja granic); ISO/IEC 9075-2 (SQL/Foundation), najnowsza dostępna edycja
  • MySQL 8.0 Reference Manual — "Comparison Operators" / opis operatora BETWEEN (równoważność z >= i <=): https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html (dostęp: 2026-02-28)
  • PostgreSQL Documentation — "Functions and Operators" / "BETWEEN" (inkluzywność): https://www.postgresql.org/docs/current/functions-comparison.html (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja SQL dla wybranego DBMS (sekcja: SELECT, WHERE, BETWEEN, AND/OR)
  • Ćwiczenia z logiki Boole’a w kontekście baz danych (tabele prawdy AND/OR)
  • Zadania praktyczne: filtrowanie danych w tabelach przykładowych (produkty, zamówienia)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego