KWALIFIKACJA INF3 - STYCZEŃ 2023

PYTANIE NR 17.
Na tabeli dana, której wiersze zostały pokazane na obrazie, wykonano przedstawioną kwerendę SELECT.
Ile wierszy wybierze kwerenda?
Ilustracja przedstawia fragment tabeli z danymi oraz zapytanie SQL.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapytanie wybiera rekordy spełniające jednocześnie warunki: typ < 3 oraz cena < 30.
Wiersze z ceną równą 30 nie spełniają warunku "cena < 30", bo "<" jest nierównością ścisłą. Po przefiltrowaniu zostają 2 rekordy, a LIMIT 5 nie zmienia wyniku, bo 2 < 5.

Pełne wyjaśnienie:

W zapytaniu SELECT * FROM dania WHERE typ < 3 AND cena < 30 LIMIT 5 kluczowe są dwa elementy: filtrowanie w WHERE oraz ograniczenie liczby wyników przez LIMIT.

1) Jak działa WHERE z AND
Warunek typ < 3 AND cena < 30 jest koniunkcją: rekord przechodzi dalej tylko wtedy, gdy spełnia oba kryteria jednocześnie. To znaczy, że nie wystarczy spełnić jednego z nich.

2) Dlaczego "cena = 30" odpada
Operator "<" oznacza ściśle mniejsze. Dlatego wartości równe granicy (np. 30) nie spełniają warunku cena < 30. To częsty błąd: traktowanie "<" jak "≤".

3) Zastosowanie warunków do danych z tabeli

  • typ < 3 przepuszcza tylko typy 1 i 2 (rekordy z typem 3 są odrzucone niezależnie od ceny).
  • cena < 30 przepuszcza tylko ceny 29 i mniej, więc wszystkie rekordy z ceną 30, 35, 40 itd. odpadają.

Po sprawdzeniu rekordów widać, że oba warunki spełniają wyłącznie dwa wiersze: te, w których jednocześnie typ jest mniejszy od 3 i cena jest mniejsza od 30.

4) Rola LIMIT 5
LIMIT nie jest kolejnym warunkiem logicznym. On tylko mówi: "zwróć maksymalnie 5 wierszy z tego, co zostało po filtracji". Skoro po WHERE są tylko 2 pasujące rekordy, to LIMIT 5 nic nie ucina — wynik nadal ma 2 wiersze.

Dlaczego pozostałe odpowiedzi są błędne?
Wyniki 5, 8 lub 13 zwykle biorą się z jednego z typowych nieporozumień: doliczenia rekordów z ceną równą 30 (błędna interpretacja "<"), policzenia rekordów spełniających tylko jeden warunek (pomylenie AND z OR) albo zliczenia całej tabeli bez realnej filtracji. Poprawne podejście to zawsze sprawdzenie każdego wiersza względem obu warunków.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza, że zostaną wybrane tylko te rekordy, w których wartość kolumny cena jest ściśle mniejsza niż 30. Rekord z ceną równą 30 nie spełnia tego warunku, bo operator < nie obejmuje równości.
Ponieważ w zapytaniu użyto operatora <, a nie <=. W SQL "mniejsze niż" oznacza wyłącznie wartości poniżej progu. Cena równa 30 jest wartością graniczną i zostaje odrzucona przez filtr WHERE.
AND wymaga spełnienia wszystkich warunków jednocześnie. Rekord przejdzie dalej tylko wtedy, gdy pasuje do kryterium typu oraz do kryterium ceny. Jeśli spełnia tylko jeden z nich, nie trafi do wyniku.
Nie. LIMIT nie sprawdza warunków na danych. Najpierw działa WHERE (filtrowanie), a dopiero potem LIMIT ogranicza maksymalną liczbę zwróconych rekordów. Jeśli po filtracji są 2 rekordy, to LIMIT 5 niczego nie zmieni.
Najpewniej: przejść po każdym wierszu tabeli i sprawdzić warunki z WHERE jeden po drugim. Przy AND rekord musi spełnić oba. Dopiero te rekordy zliczasz. Na końcu uwzględniasz LIMIT, ale tylko gdy wynik jest większy niż limit.
AND oznacza "wszystko naraz" (rekord ma spełniać wszystkie warunki). OR oznacza "wystarczy jedno" (rekord może spełnić dowolny z warunków). W zadaniach egzaminacyjnych ta różnica zmienia wynik zliczania rekordów najbardziej.
LIMIT zmienia wynik wtedy, gdy po zastosowaniu WHERE liczba pasujących rekordów jest większa niż podany limit. Przykład: jeśli filtr zwraca 12 rekordów, a LIMIT wynosi 5, to dostaniesz tylko 5 pierwszych rekordów z tego zestawu.
Tak, w standardowym SQL operator < oznacza "mniejsze niż" bez równości. Jeśli chcesz uwzględnić także wartość graniczną, używa się operatora <=. To jedna z najczęstszych pułapek w zadaniach na filtrowanie danych.
Typowe błędy to: dopisanie równości do warunku (traktowanie < jak <=), pomylenie AND z OR, oraz błędne rozumienie LIMIT jako filtra. Pomaga zapisanie sobie: WHERE wybiera, LIMIT tylko ucina liczbę wyników.
Warto tworzyć małe tabelki testowe (kilkanaście wierszy) i ręcznie przewidywać wynik zapytań, a potem porównywać z wynikiem z bazy. Szczególnie ćwicz progi liczbowe (np. 30) i sprawdzaj, czy warunek jest ścisły (<) czy z równością (<=).
info

Około 50% zdających odpowiada poprawnie na to pytanie. trudne

Według specjalistów z branży: "Zapytanie wybiera rekordy spełniające jednocześnie warunki: typ &lt; 3 oraz cena &lt; 30.Wiersze z ceną równą 30 nie spełniają warunku "cena &lt; 30", bo "&lt;" jest nierównością ścisłą."

Źródła:

  • ISO/IEC 9075 (SQL) — opis operatorów porównania i logiki warunków (część dotycząca < i koniunkcji AND); brak publicznego, darmowego dostępu do pełnej treści normy
  • MySQL 8.0 Reference Manual — SELECT Syntax (LIMIT): https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-02-27)
  • PostgreSQL Documentation — SELECT (LIMIT/OFFSET): https://www.postgresql.org/docs/current/sql-select.html (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja używanego silnika SQL (np. MySQL/MariaDB/PostgreSQL) dotycząca SELECT, WHERE i LIMIT
  • Materiały szkolne z podstaw baz danych relacyjnych (zapytania SELECT i logika warunków)
  • Ćwiczenia praktyczne: ręczne wyliczanie wyników dla prostych tabel i zapytań z AND oraz operatorami <, >, =

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego