WHERE Clause czyli jak działa filtrowanie w bazie danych

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:

where clause SQL result

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 !=
BETWEENMiędzy pewnym zakresem
LIKEPodobne do wzoru (tekstowego)
INZawierają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 😉!

Analizuj w pokoju i pamiętaj, by zapisać się na newsletter, który pozwoli Ci pracować jak najlepsi 😎!

Wolisz oglądać 📺 niż czytać – nie ma problemu!  >>> Obserwuj i oglądaj KajoData na YouTube