W większości przypadków konieczne jest otrzymanie nie wszystkich rekordów, a jedynie tych, które spełniają określone kryteria. Dlatego w SQL istnieje specjalny operator WHERE do filtrowania próbkowania.
Wybierzmy z naszej tabeli np. rekordy, które dotyczą tylko określonego produktu. W tym celu podajemy dodatkowy parametr selekcji, który będzie filtrował wartości po kolumnie Produkt.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes'
Jak widać, warunek wyboru jest ujęty w pojedynczy cudzysłów, co jest obowiązkowe przy filtrowaniu wartości tekstowych. Cudzysłowy nie są wymagane podczas filtrowania wartości liczbowych.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000
ORDER BY Amount
W tym przykładzie wybraliśmy rekordy, w których przychód ze sprzedaży przekroczył 40 000 USD i dodatkowo posortowaliśmy wszystkie rekordy w kolejności rosnącej według pola Kwota.
Poniższa tabela zawiera instrukcje warunkowe obsługiwane przez SQL:
Знак операції | Значення |
---|---|
= | Дорівнює |
<> | Не дорівнює |
< | Менше |
<= | Менше або рівне |
> | Більше |
>= | Більше або рівне |
BETWEEN | Між двома значеннями |
IS NULL | Відсутній запис |
Operator BETWEEN służy do selekcji danych znajdujących się w określonym przedziale. W kolejnym zapytaniu zostaną wybrane wszystkie wartości mieszczące się w przedziale od 1000 do 2000 dolarów włącznie w polu Kwota.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount BETWEEN 1000 AND 2000
Kolejność sortowania będzie zależała od kolejności pól w zapytaniu. Oznacza to, że w naszym przypadku dane zostaną najpierw posortowane według kolumny Kwota, a następnie według City.
W języku SQL istnieje specjalny operator służący do wybierania pustych rekordów (zwany NULL). Pusty wpis to dowolna komórka w tabeli, w której nie wprowadzono żadnego znaku. Jeżeli w komórce zostanie wpisane 0 lub spacja, uważa się, że pole jest wypełnione.
SELECT *
FROM Sumproduct
WHERE Amount IS NULL
W powyższym przykładzie celowo usunęliśmy dwie wartości z pola Kwota, aby zademonstrować działanie operatora NULL.
Język SQL nie ogranicza się do filtrowania według jednego warunku, na własne potrzeby można zastosować dość złożone konstrukcje, aby selekcjonować dane jednocześnie według wielu kryteriów. W tym celu SQL ma dodatkowe operatory, które rozszerzają możliwości operatora WHERE. Takimi operatorami są: AND, OR, IN, NOT. Podamy kilka przykładów działania tych operatorów.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT *
FROM Sumproduct
WHERE Month = 'April' OR Month = 'March'
Połączmy operatory AND i OR. W tym celu dokonamy selekcji rowerów (Bikes) i łyżew (Skates), które zostały sprzedane w marcu.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'
Widzimy, że w naszej próbie znalazło się wiele wartości (oprócz marca także styczeń, luty i kwiecień). Jaki jest powód? Oraz fakt, że SQL ma priorytety wykonywania poleceń. Oznacza to, że operator AND ma wyższy priorytet niż operator OR, więc jako pierwsze zostały wybrane rekordy z rolkami sprzedanymi w marcu, a następnie wszystkie rekordy związane z rowerami.
Aby więc uzyskać prawidłowe próbkowanie, musimy zmienić priorytety wykonywania poleceń. W tym celu użyjemy nawiasów, jak w matematyce. Następnie najpierw zostaną przetworzone operatory w nawiasach, a potem cała reszta.
Run SQLSELECT *
FROM Sumproduct
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'
Run SQLSELECT *
FROM Sumproduct
WHERE ID IN (4, 12, 58, 67)
Operator IN pełni tę samą funkcję co OR, ale ma kilka zalet:
Run SQLSELECT *
FROM Sumproduct
WHERE NOT City IN ('Toronto', 'Montreal')
Słowo kluczowe NOT pozwala usunąć niepotrzebne wartości z próbki. Jego cechą jest również to, że jest on umieszczany przed nazwą kolumny objętej filtrowaniem, a nie po.