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.