KWALIFIKACJA INF3 - CZERWIEC 2024 (test 2)

PYTANIE NR 19.
SELECT model FROM samochody WHERE rocznik > 2017 AND marka = "opel"; Tabela samochody zawiera rekordy przedstawione na obrazie. Wydając przedstawione zapytanie SQL zostaną zwrócone dane:
Ilustracja przedstawia tabelę z danymi dotyczącymi samochodów, co jest częścią pytania egzaminacyjnego związanego z
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapytanie wybiera tylko kolumnę model z tabeli samochody, ale wyłącznie dla rekordów spełniających oba warunki: rocznik > 2017 oraz marka równa "opel". Zatem w wyniku pojawiają się same nazwy modeli, a nie marka+model; z danych z tabeli spełnia to "zafira".

Pełne wyjaśnienie:

W zapytaniu SQL kluczowe są dwie rzeczy: jakie kolumny zwracamy oraz jakie rekordy filtrujemy.

1) Zwracane dane (SELECT)
Fragment SELECT model oznacza, że wynik ma zawierać wyłącznie wartości z kolumny model. Nawet jeśli w tabeli istnieje kolumna marka, to nie zostanie ona zwrócona, bo nie została wymieniona w SELECT.

2) Filtrowanie rekordów (WHERE)
Klauzula WHERE rocznik > 2017 AND marka = "opel" ogranicza zbiór wierszy do tych, które spełniają jednocześnie oba warunki:

  • rocznik > 2017 – rocznik musi być większy niż 2017 (np. 2018, 2019 itd.).
  • marka = "opel" – marka musi być równa opel.

Operator AND działa jak część wspólna: jeśli którykolwiek warunek nie jest spełniony, rekord nie trafi do wyniku.

Dlaczego poprawne jest "zafira"?
Zgodnie z danymi widocznymi w dołączonej tabeli, po nałożeniu obu filtrów pozostaje rekord (lub rekordy), w którym zwracany model ma wartość "zafira". Ponieważ wybieramy tylko kolumnę model, w wyniku pojawia się samo "zafira".

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

  • Odpowiedzi zawierające "opel zafira" lub "opel zafira; opel insignia" sugerują, że wynik zawiera także markę. To nie zgadza się z SELECT model, który zwraca tylko modele.
  • Odpowiedź "zafira; insignia" zakłada, że oba modele spełniają warunki filtra. To byłoby prawdziwe tylko wtedy, gdy w tabeli istnieje również rekord z modelem "insignia", marką opel i rocznikiem > 2017. Z przedstawionych danych wynika, że warunki spełnia wyłącznie "zafira".

Wskazówka egzaminacyjna: zawsze czytaj zapytanie w dwóch krokach: (a) najpierw ustal, które wiersze przejdą przez WHERE, (b) potem sprawdź, które kolumny finalnie są wypisywane przez SELECT.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza wybór (zwrócenie) wartości tylko z kolumny model z tabeli samochody. Wynik nie zawiera innych kolumn (np. marka), jeśli nie są wskazane w SELECT, nawet gdy istnieją w tabeli.
Warunek rocznik > 2017 przepuszcza tylko te rekordy, w których wartość rocznika jest większa niż 2017, czyli np. 2018, 2019 itd. Rekordy z rocznikiem 2017 lub mniejszym nie pojawią się w wyniku.
AND wymaga spełnienia wszystkich warunków jednocześnie. Rekord trafi do wyniku tylko wtedy, gdy ma rocznik > 2017 i jednocześnie ma markę równą opel. To zawęża wyniki bardziej niż pojedynczy warunek.
Nie. SQL zwraca tylko te kolumny, które wymienisz po słowie SELECT. Jeśli potrzebujesz w wyniku również marki, musisz użyć np. SELECT marka, model. Sama obecność kolumny w tabeli nie oznacza jej zwrócenia.
Najpierw odfiltruj wiersze: sprawdź każdy rekord i zostaw tylko te, które spełniają warunki w WHERE. Następnie z pozostałych wierszy przepisz wartości tylko z kolumn wymienionych w SELECT. To podejście minimalizuje pomyłki na egzaminie.
Jest błędna, jeśli zapytanie zwraca wyłącznie kolumnę model. Wtedy wynik zawiera samo "zafira", bez dopisywania marki. Odpowiedzi łączące markę i model pasowałyby do zapytania typu SELECT marka, model.
To zależy od systemu bazy danych i ustawień. W wielu dialektach standardowo literały tekstowe zapisuje się w pojedynczych cudzysłowach (np. 'opel'), a podwójne cudzysłowy są dla identyfikatorów. Na egzaminie warto znać konwencję i czytać polecenie w kontekście DBMS.
Częsty błąd to traktowanie go jak rocznik ≥ 2017. Symbol > oznacza "większe niż", więc 2017 odpada. Drugi błąd to pominięcie drugiego warunku (marka) i wybór wszystkich aut po roczniku, niezależnie od marki.
Należy wskazać obie kolumny w SELECT, np. SELECT marka, model FROM samochody WHERE .... Wtedy wynik będzie miał dwie kolumny. To ważne rozróżnienie: SELECT decyduje o kolumnach wyniku, a WHERE tylko o tym, które wiersze przechodzą.
Ćwicz na małych tabelach: zapisuj 5–10 rekordów i ręcznie wykonuj filtrację z WHERE, potem wypisuj wskazane kolumny z SELECT. Dodaj warianty z AND/OR oraz różnymi operatorami (>, <, =). To buduje automatyzm potrzebny na egzaminie.
info

To pytanie poprawnie rozwiązuje 52% zdających egzamin. trudne

Specjaliści zwracają uwagę: "Zapytanie wybiera tylko kolumnę model z tabeli samochody, ale wyłącznie dla rekordów spełniających oba warunki: rocznik &gt; 2017 oraz marka równa "opel"."

Źródła:

  • PostgreSQL Documentation: "SELECT" (Queries), https://www.postgresql.org/docs/current/sql-select.html - dostęp 2026-03-01
  • MySQL 8.0 Reference Manual: "SELECT Statement", https://dev.mysql.com/doc/refman/8.0/en/select.html - dostęp 2026-03-01
  • SQLite Documentation: "SELECT" (The SQLite Query Language), https://www.sqlite.org/lang_select.html - dostęp 2026-03-01

Materiały:

  • Dokumentacja wybranego DBMS (MySQL/PostgreSQL/SQLite) – sekcje SELECT i literały
  • Ćwiczenia: zapytania SELECT z WHERE, AND/OR oraz operatorami porównania
  • Materiały szkolne z baz danych dla INF.3: podstawy SQL i praca na tabelach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego