WHERE Clause jest używane w filtrowania rekordów w trakcie zapytania w języku SQL. Dlatego jeżeli szukałeś WHERE Clause w Google to jesteś w dobrym miejscu. Wytłumaczę Ci szybko, jak działa filtrowanie w relacyjnej bazie danych.
Gdzie się używa WHERE Clause w SQL?
WHERE używamy po słowach FROM i JOIN, natomiast przed ewentualnymi GROUP BY i ORDER BY.
Zapytanie SQL w którym zastosujemy filtrowanie w bazie danych może zatem w wyglądać tak:
select
shipping_mode
,count(distinct order_id) as unique_orders
from db1.orders
where delivery_state = 'Texas'
group by 1
order by 2 desc
Jeżeli zwroty group by 1 order by 2 desc są dla Ciebie zagadkowe odsyłam do odpowiednich artykułów .
Rezultat tego zapytania wyglądałby następująco:
W naszej kwerendzie SQL, odpytaliśmy tabelę orders, bo chcieliśmy wiedzieć ile jest unikalnych zamówień, gdzie delivery_state było równe Texas. Prościej: ile zamówień poszło do Teksasu. Wynik jest pogrupowany przez shipping_mode (powiedzmy – rodzaj dostawy).
Pamiętaj, że WHERE Clause nie stosujemy wyłącznie w zapytaniach typu SELECT czy SELECT DISTINCT. Równie ważne jest zastosowanie WHERE w operacjach takich jak DELETE czy UPDATE.
Filtrowanie w bazie danych – tekst a liczby
Jak widać na poprzednim przykładzie, tekst umieszczamy w pojedynczym cudzysłowie.
Liczbę bez, np:
select
shipping_mode
,count(distinct order_id) as unique_orders
from db1.orders
where customer_id < 300
group by 1
Jeżeli chodzi o daty to zależy to trochę od silnika SQL.
W MySQL WHERE Clause z użyciem dat może to np. wyglądać tak:
select
shipping_mode
,count(distinct order_id) as unique_orders
from db1.orders
where order_date <= date('2019-01-01')
group by 1
Jak zauważyłeś filtrujemy za pomocą różnych znaczków. Przyjrzyjmy się im.
Operatory logiczne w SQL WHERE Clause
= | Równe |
> | Większe niż |
< | Mniejsze niż |
>= | Większe lub równe |
<= | Mniejsze lub równe |
<> | Nie równe. Uwaga: W niektórych wersjach SQL ten operator może być zapisany jako != |
BETWEEN | Między pewnym zakresem |
LIKE | Podobne do wzoru (tekstowego) |
IN | Zawierające wartości… |
Oczywiście nic nie stoi na przeszkodzie by użyć wielu filtrów przy pomocy słów AND oraz OR. Przypomina to trochę zabawę z formułą IF w Excelu, gdzie też mamy AND i OR by łączyć warunki na różnych zasadach.
Przykład poniżej:
select
shipping_mode
,count(distinct order_id) as unique_orders
from db1.orders
where
order_date <= date('2019-01-01')
and (customer_id < 300 or delivery_state = 'Texas')
group by 1
Mam nadzieję, że rozwiałem Twoje wątpliwości co WHERE Clause i generalnie tematu filtrowania w bazie danych.
To tyle w tym temacie. Analizujcie w pokoju!
Podobał Ci się ten artykuł 🙂?
Podziel się nim w Social Mediach 📱
>>> udostępnij go na LinkedIn i pokaż, że codziennie uczysz się czegoś nowego
>>> wrzuć go na Facebooka, to się może przydać któremuś z Twoich znajomych
>>> Przypnij sobie tą stronkę to zakładek, może się przydać w przyszłości
Wolisz oglądać 📺 niż czytać – nie ma problemu
>>> Obserwuj i oglądaj KajoData na YouTube
Inne ciekawe artykuły: