Zapytanie:
SELECT imie, pesel, wiek
FROM dane
WHERE wiek IN (18,30)
Składa się z dwóch kluczowych elementów: listy wybieranych kolumn w SELECT oraz warunku filtrującego w WHERE.
SELECT imie, pesel, wiek oznacza, że w wyniku zapytania mają znaleźć się wyłącznie trzy kolumny: imię, numer PESEL i wiek (inne kolumny z tabeli nie zostaną zwrócone).
WHERE wiek IN (18,30) ogranicza wynik do tych wierszy (rekordów), w których wartość w kolumnie wiek jest jedną z wartości wymienionych na liście. W praktyce jest to skrót zapisu logicznego:
WHERE wiek = 18 OR wiek = 30
Dlatego poprawne jest stwierdzenie, że zapytanie wybierze dane osób w wieku równym 18 lub 30 lat.
Dlaczego pozostałe odpowiedzi są błędne?
- Odpowiedź mówiąca o "przedziale od 18 do 30 lat" myli operator IN z operatorem przedziału. W SQL do przedziałów używa się najczęściej BETWEEN 18 AND 30 (z uwzględnieniem wartości krańcowych) albo dwóch porównań, np. wiek >= 18 AND wiek <= 30.
- Odpowiedź o osobach "powyżej 30 lat" jest sprzeczna z warunkiem, bo IN (18,30) nie obejmuje wartości większych niż 30 (np. 31, 40). Aby wybrać osoby powyżej 30 lat, warunek wyglądałby np. wiek > 30.
- Odpowiedź zawierająca "nazwiska" jest niezgodna z listą kolumn w SELECT (nie ma tam kolumny nazwisko). Dodatkowo "poniżej 18 lat" nie wynika z warunku równości do 18 lub 30.
Wskazówka egzaminacyjna: gdy widzisz IN (a,b,c), czytaj to jako "równe a lub b lub c", a nie jako zakres liczbowy.