KWALIFIKACJA INF3 - CZERWIEC 2023 (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, która jest częścią pytania egzaminacyjnego z kwalifikacji
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapytanie wybiera tylko kolumnę model z tabeli samochody, ale wyłącznie dla rekordów, w których rocznik jest większy niż 2017 oraz marka ma wartość "opel" (warunki połączone AND muszą być spełnione jednocześnie). Dlatego wynik nie zawiera marki i zwraca samą wartość modelu: zafira.

Pełne wyjaśnienie:

W zapytaniu:

SELECT model FROM samochody WHERE rocznik > 2017 AND marka = "opel";

kluczowe są dwie rzeczy:

  • Lista wybieranych kolumn: po słowie SELECT podano tylko model. Oznacza to, że wynikiem będzie zestaw wartości z tej jednej kolumny. Nawet jeśli tabela ma też kolumny marka i rocznik, nie pojawią się one w rezultacie, bo nie zostały wskazane w SELECT.
  • Filtrowanie w WHERE: warunek rocznik > 2017 przepuszcza tylko rekordy z rocznikiem 2018 i nowszym (nie obejmuje 2017). Warunek marka = "opel" przepuszcza tylko rekordy tej marki. Ponieważ warunki połączono operatorem AND, rekord musi spełniać oba kryteria jednocześnie.

Odpowiedź 'zafira' jest zgodna z tym, co zwraca SELECT (jedna kolumna) i z tym, że po filtracji zostaje pasujący rekord/rekordy o takim modelu.

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

  • 'opel zafira' sugeruje zwrócenie także wartości marki. To byłoby możliwe dopiero po zapytaniu typu SELECT marka, model albo po złączeniu pól w wyrażeniu (np. konkatenacji), czego tu nie ma.
  • 'zafira; insignia' oznaczałoby, że po zastosowaniu filtrów pozostają co najmniej dwa różne modele. Przy podanym kluczu odpowiedzi zakłada się, że po filtracji pasuje tylko 'zafira'.
  • 'opel zafira; opel insignia' powiela dwa problemy naraz: dodaje markę mimo braku jej w SELECT oraz zakłada dwa modele jako wynik.

Wskazówka egzaminacyjna: zawsze najpierw sprawdź, jakie kolumny są w SELECT (to determinuje format wyniku), a dopiero potem analizuj warunki w WHERE (to determinuje, które wiersze przejdą filtr).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza filtr: do wyniku przechodzą tylko wiersze, w których wartość w kolumnie rocznik jest większa niż 2017, czyli np. 2018, 2019 itd. Wartość 2017 nie spełnia tego warunku, bo nie jest większa.
Operator AND wymaga jednoczesnego spełnienia wszystkich warunków. Jeśli choć jeden warunek jest fałszywy, wiersz nie zostanie zwrócony. To najczęstsza różnica względem OR, gdzie wystarczy spełnić jeden z warunków.
Bo w SQL zwracane są tylko te kolumny, które wymienisz po słowie SELECT. Jeśli wpiszesz tylko model, wynik będzie zawierał wyłącznie wartości tej kolumny. Marka i rocznik mogą być użyte w WHERE, ale nie muszą być zwracane.
Trzeba dodać kolumnę do listy SELECT, np. SELECT marka, model FROM samochody .... Wtedy wynik ma dwie kolumny. Alternatywnie można zbudować jedną kolumnę tekstową (konkatenację), ale to zależy od silnika bazy.
Nie zawsze. W wielu bazach (np. MySQL) spotkasz tekst w cudzysłowach pojedynczych i podwójnych, ale w SQL standardowo literały tekstowe zapisuje się zwykle w apostrofach. Na egzaminie trzymaj się zasad konkretnego zadania i konsekwencji zapisu.
Najczęstszy błąd to mylenie > z >= i niepoprawne włączanie wartości granicznej (tu: 2017). Drugi błąd to porównywanie tekstu zamiast liczby (gdy kolumna ma zły typ), co może dać nieintuicyjne wyniki.
Gdy w tabeli istnieje kilka rekordów spełniających warunki, a ich kolumna model ma tę samą wartość. Wtedy SELECT zwróci powtarzające się wartości. Jeśli chcesz unikalne modele, stosuje się zwykle DISTINCT.
DISTINCT usuwa duplikaty w wynikach dla wskazanych kolumn. Przykład: SELECT DISTINCT model FROM samochody ... zwróci każdy model tylko raz, nawet jeśli w tabeli jest wiele pasujących rekordów o tym samym modelu.
Najpierw ustal format wyniku: jakie kolumny są w SELECT. Potem przejdź warunki WHERE krok po kroku i odfiltruj wiersze. Na końcu z pozostałych wierszy przepisz wartości wyłącznie z wybieranych kolumn.
W aplikacjach WWW i panelach administracyjnych: wyszukiwarki, listy produktów/pojazdów, raporty, API z parametrami filtrów. Poprawne łączenie warunków AND/OR i wybór kolumn wpływa na czytelność, wydajność i bezpieczeństwo zapytań.
info

Około 62% zdających odpowiada poprawnie na to pytanie. średnie

Specjaliści zwracają uwagę: "Dlatego wynik nie zawiera marki i zwraca samą wartość modelu: zafira."

Źródła:

  • MySQL 8.0 Reference Manual: "SELECT Statement" (składnia SELECT i lista kolumn), https://dev.mysql.com/doc/refman/8.0/en/select.html - dostęp 2026-03-02
  • PostgreSQL Documentation: "SELECT" (zwracanie wskazanych kolumn i filtrowanie WHERE), https://www.postgresql.org/docs/current/sql-select.html - dostęp 2026-03-02
  • SQLite Documentation: "SELECT" (podstawy selekcji kolumn i warunki), https://sqlite.org/lang_select.html - dostęp 2026-03-02

Materiały:

  • Dokumentacja języka SQL dla używanego systemu bazy danych (np. MySQL/SQLite/PostgreSQL)
  • Ćwiczenia z zapytań SELECT z warunkami WHERE (AND/OR, operatory porównania)
  • Zadania praktyczne: interpretacja wyników zapytań na przykładowych tabelach

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego