W SQL zapytanie typu SELECT służy do pobierania danych. Składa się m.in. z listy wybieranych kolumn oraz źródła danych (tabela) i opcjonalnego filtra.
1) Co oznacza *
Gwiazdka * w części SELECT * jest tzw. operatorem wieloznacznym i oznacza: zwróć wszystkie kolumny z podanej tabeli. Jest to równoważne wypisaniu po przecinku każdej nazwy kolumny (np. imie, nazwisko, …), tylko w skróconej formie.
2) Co robi WHERE
Klauzula WHERE nie wybiera kolumn, tylko ogranicza liczbę wierszy w wyniku. Warunek imie = 'Anna' oznacza, że zostaną zwrócone wyłącznie te rekordy, w których wartość w kolumnie imie jest dokładnie równa tekstowi 'Anna'.
Wniosek
Wynik zapytania zawiera więc wszystkie kolumny tabeli mieszkancy, ale tylko dla wyfiltrowanych wierszy spełniających warunek.
Dlaczego pozostałe odpowiedzi są błędne?
- Stwierdzenie o "polu o nazwie *" jest niepoprawne: * nie jest nazwą kolumny, tylko skrótem oznaczającym zestaw wszystkich kolumn.
- Odpowiedź o "wszystkich rekordach niezależnie od imie" ignoruje fakt, że WHERE działa jako filtr i ogranicza wynik.
- Twierdzenie, że warunek WHERE jest ignorowany, jest sprzeczne z zasadą działania SQL: WHERE jest wykonywany przy wyborze wierszy i bez niego wynik byłby szerszy.
Wskazówka praktyczna: w aplikacjach internetowych często zamiast * podaje się konkretne kolumny (np. SELECT imie, nazwisko), aby poprawić czytelność i ograniczyć ilość przesyłanych danych.