CodeGym /Kursy /SQL SELF /Operatory logiczne (AND, OR, NOT): łączenie warunków

Operatory logiczne (AND, OR, NOT): łączenie warunków

SQL SELF
Poziom 2 , Lekcja 2
Dostępny

Operatory logiczne to narzędzia, które pomagają łączyć warunki w zapytaniach, żeby filtrować dane bardziej precyzyjnie. Pewnie już się z nimi spotkałeś w językach programowania. Jeśli porównać zapytania do programu filtrującego spam w skrzynce mailowej, to operatory logiczne można potraktować jak zasady, według których maile trafiają do folderu "Spam" albo zostają w "Odebrane".

SQL to narzędzie, które często wykorzystuje się do pobierania albo analizowania danych. Operatory logiczne (AND, OR, NOT) pozwalają łączyć kilka warunków w jednym zapytaniu, żeby odpowiadać na bardziej złożone pytania, na przykład:

  • Którzy studenci mają więcej niż 18 lat i ocenę "A"?
  • Jakie produkty należą do kategorii "Elektronika" albo "AGD"?
  • Którzy klienci nie dokonali zakupów?

No to rozkminiamy trzy główne operatory logiczne w SQL:

  1. AND: oba warunki muszą być prawdziwe.
  2. OR: wystarczy, że jeden z warunków będzie prawdziwy.
  3. NOT: odwraca (neguje) warunek.

Operator AND: oba warunki prawdziwe

Operator AND pozwala określić, że obie części warunku muszą być spełnione, żeby wiersz znalazł się w wyniku.

Składnia

SELECT kolumna1, kolumna2
FROM tabela
WHERE warunek AND warunek2;

Przykład 1: Filtrowanie studentów starszych niż 18 lat i z oceną "A"

Załóżmy, że mamy tabelę students:

id name age grade
1 Alex 20 A
2 Maria 19 B
3 Otto 17 A
4 Anna 22 A

Zapytanie:

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A';

Wynik:

name age grade
Alex 20 A
Anna 22 A

Przykład 2: Filtrowanie pracowników z działu "HR" i z pensją powyżej 50000

SELECT name, department, salary
FROM employees
WHERE department = 'HR' AND salary > 50000;

Operator OR: wystarczy jeden warunek prawdziwy

Operator OR używamy, kiedy chcemy wybrać wiersze spełniające przynajmniej jeden z warunków.

Składnia

SELECT kolumna1, kolumna2
FROM tabela
WHERE warunek OR warunek2;

Przykład 1: Filtrowanie studentów z oceną "A" albo "B"

SELECT name, age, grade
FROM students
WHERE grade = 'A' OR grade = 'B';

Wynik:

name age grade
Alex 20 A
Maria 19 B
Otto 17 A
Anna 22 A

Przykład 2: Produkty z kategorii "Elektronika" albo z ceną poniżej 100

Tabela products:

product_id name category price
1 Telewizor Elektronika 300
2 Żelazko AGD 50
3 Smartfon Elektronika 700
4 Czajnik AGD 80
SELECT name, category, price
FROM products
WHERE category = 'Elektronika' OR price < 100;

Wynik:

name category price
Telewizor Elektronika 300
Żelazko AGD 50
Czajnik AGD 80
Smartfon Elektronika 700

Operator NOT: odwrócenie warunku

Jeśli AND i OR określają warunki, które muszą być prawdziwe, to NOT robi odwrotnie: wybiera wiersze, dla których dany warunek jest fałszywy.

Składnia

SELECT kolumna1, kolumna2
FROM tabela
WHERE NOT warunek;

Przykład 1: Filtrowanie studentów, którzy nie mają oceny "A"

SELECT name, age, grade
FROM students
WHERE NOT grade = 'A';

Wynik:

name age grade
Maria 19 B

Przykład 2: Wyszukiwanie produktów, które nie należą do kategorii "Elektronika"

SELECT name, category, price
FROM products
WHERE NOT category = 'Elektronika';

Kombinacja operatorów logicznych

Operatory logiczne można łączyć, żeby tworzyć jeszcze bardziej złożone warunki. Na przykład, jeśli chcesz wybrać studentów starszych niż 18 lat i z oceną "A" albo "B", możesz połączyć AND i OR.

Składnia z kombinacją

SELECT kolumna1, kolumna2
FROM tabela
WHERE (warunek1 AND warunek2) OR warunek3;

Przykład: Studenci starsi niż 18 lat z oceną "A" albo studenci z oceną "B"

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR grade = 'B';

Wynik:

name age grade
Alex 20 A
Anna 22 A
Maria 19 B

Priorytet wykonania operatorów

Ważne, żeby pamiętać, że SQL wykonuje operatory logiczne w takiej kolejności:

  1. NOT
  2. AND
  3. OR

Możesz używać nawiasów, żeby zmienić kolejność wykonania. Bez nawiasów wynik może być zaskakujący!

Przykład: Porównanie z nawiasami i bez

Co się stanie w tym zapytaniu?

SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A' OR grade = 'B';

To zapytanie wybiera studentów:

  1. Którzy mają więcej niż 18 lat i ocenę "A".
  2. Którzy mają ocenę "B".

Priorytet wykonania operatorów daje taki sam wynik, jak z nawiasami:

SELECT name, age, grade
FROM students
WHERE (age > 18 AND grade = 'A') OR (grade = 'B');

Ale jeśli dodamy nawiasy:

SELECT name, age, grade
FROM students
WHERE age > 18 AND (grade = 'A' OR grade = 'B');

Teraz zostaną wybrani studenci starsi niż 18 lat z oceną "A" albo "B". Nawiasy naprawdę zmieniają wszystko!

Typowe błędy przy używaniu operatorów logicznych

  1. Zapomniane nawiasy. To może prowadzić do nieoczekiwanych wyników, szczególnie przy łączeniu AND i OR.
  2. Użycie NOT bez jasnego zrozumienia, które wiersze są wykluczane.
  3. Złe użycie operatorów logicznych. Na przykład AND zamiast OR albo odwrotnie.
  4. Zbyt skomplikowane warunki. Bardzo długie warunki z wieloma AND, OR, NOT bez komentarzy mogą być ciężkie do ogarnięcia.

Te operatory to podstawa każdego bardziej złożonego zapytania. Teraz jesteś gotowy pisać zapytania, które nie tylko działają, ale też znajdują dokładnie to, czego szukasz!

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION