Określa, których rekordów tabel wymienionych w klauzuli FROM dotyczy instrukcja SELECT, UPDATE lub DELETE.
Składnia
SELECT lista_pól
FROM wyrażenie_tabeli WHERE kryteriaInstrukcja SELECT zawierająca klauzulę WHERE składa się z następujących segmentów:
Segment |
Opis |
lista_pól |
Nazwa pola lub pól, które mają być pobrane, wraz ze wszystkimi aliasami nazw pól, orzeczeniami wyboru (ALL, DISTINCT, DISTINCTROW lub TOP) i innymi opcjami instrukcji SELECT. |
wyrażenie_tabeli |
Nazwa tabeli lub tabel, z których są pobierane dane. |
kryteria |
Jest to wyrażenie, które muszą spełniać rekordy, aby były uwzględniane w wynikach zapytania. |
Spostrzeżenia
Aparat bazy danych programu Microsoft Access wybiera rekordy spełniające warunki wymienione w klauzuli WHERE. Jeśli klauzula WHERE nie zostanie użyta, zapytanie zwraca wszystkie wiersze z tabeli. Jeśli w zapytaniu zostanie określona więcej niż jedna tabela, a nie zostanie dołączona klauzula WHERE lub JOIN, zapytanie wygeneruje iloczyn kartezjański tabel.
Klauzula WHERE jest opcjonalna, ale jeśli występuje, jest umieszczona po klauzuli FROM. Na przykład: można wybrać wszystkich pracowników z działu sprzedaży (WHERE Dept = 'Sales') lub wszystkich klientów w wieku od 18 do 30 lat (WHERE Age Between 18 And 30).
Jeśli operacja SQL łączenia wielu tabel nie zostanie wykonana przy użyciu klauzuli JOIN, nie będzie można aktualizować powstałego obiektu Recordset.
Klauzula WHERE przypomina klauzulę HAVING. Klauzula WHERE określa, które rekordy są wybierane. Analogicznie: gdy rekordy zostaną pogrupowane przy użyciu instrukcji GROUP BY, klauzula HAVING określa, które rekordy są wyświetlane.
Użycie klauzuli WHERE pozwala wyeliminować rekordy, które nie mają być grupowane przez klauzulę GROUP BY.
Zakres rekordów zwracanych przez instrukcję SQL można określić za pomocą różnych wyrażeń. Na przykład poniższa instrukcja SQL spowoduje wybranie wszystkich pracowników o wynagrodzeniach wyższych niż 21 000:
SELECT LastName, Salary FROM Employees WHERE Salary > 21000;
Klauzula WHERE może zawierać maksymalnie 40 wyrażeń połączonych operatorami logicznymi, takimi jak And (Oraz) czy Or (Or).
W przypadku wpisywania nazwy pola zawierającej spację lub znak przystankowy należy ją umieścić w nawiasie kwadratowym ([ ]). Na przykład tabela informacji o klientach może zawierać informacje o konkretnych klientach:
SELECT [Customer’s Favorite Restarant]
Podczas określania argumentu kryteria literały dat muszą mieć format amerykański, nawet jeśli nie jest używana amerykańska wersja aparatu bazy danych programu Microsoft Access. Na przykład datę 10 maja 1996 zapisuje się jako 10/5/96 w Zjednoczonym Królestwie oraz jako 5/10/96 w Stanach Zjednoczonych. Literały dat muszą być ujęte w znak numeru (#), co pokazano na przykładach poniżej.
Aby odnaleźć rekordy z dnia 10 maja 1996 roku, w bazie danych w wersji używanej w Zjednoczonym Królestwie należy użyć następującej instrukcji SQL:
SELECT * FROM Orders WHERE ShippedDate = #5/10/96#;
Ewentualnie można użyć funkcji DateValue, która rozpoznaje ustawienia międzynarodowe obsługiwane przez system Microsoft Windows®. Na przykład dla Stanów Zjednoczonych należy użyć następującego kodu:
SELECT * FROM Orders WHERE ShippedDate = DateValue('5/10/96');
W przypadku wersji dla Zjednoczonego Królestwa ten fragment kodu będzie wyglądał następująco:
SELECT * FROM Orders WHERE ShippedDate = DateValue('10/5/96');
Uwaga: Jeśli kolumna, do której odwołuje się ciąg znaków kryterium, jest typu GUID, wyrażenie kryterium ma nieco inną składnię:
WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}
Należy pamiętać o umieszczeniu zagnieżdżonych nawiasów i łączników, jak pokazano w przykładzie.