JavaRush /Курси /SQL SELF /Логічні оператори (AND, OR, NOT): комбінування умов

Логічні оператори (AND, OR, NOT): комбінування умов

SQL SELF
Рівень 2 , Лекція 2
Відкрита

Логічні оператори — це інструменти, які допомагають об'єднувати умови в запитах для більш складної фільтрації даних. Скоріш за все, ти вже зустрічав їх у мовах програмування. Якщо порівнювати запити з програмою фільтрації спаму в поштовій скриньці, то логічні оператори можна уявити як правила, за якими листи потрапляють у папку "Спам" або залишаються у "Вхідних".

SQL — це інструмент, який часто використовують для вибірки або аналізу даних. Логічні оператори (AND, OR, NOT) дозволяють комбінувати кілька умов в одному запиті, щоб відповідати на більш складні питання, наприклад:

  • Які студенти старші 18 років і мають оцінку "A"?
  • Які товари відносяться до категорії "Електроніка" або "Побутова техніка"?
  • Які клієнти не здійснювали покупок?

Давай розглянемо три головних логічних оператори в SQL:

  1. AND: обидві умови мають бути істинними.
  2. OR: хоча б одна з умов має бути істинною.
  3. NOT: інвертує (заперечує) умову.

Оператор AND: обидві умови істинні

Оператор AND дозволяє вказати, що обидві частини умови мають виконуватись, щоб рядок потрапив у результат.

Синтаксис

SELECT колонка1, колонка2
FROM таблиця
WHERE умова AND умова2;

Приклад 1: Фільтрація студентів старших 18 років і з оцінкою "A"

Припустимо, у нас є таблиця students:

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

Запит:

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

Результат:

name age grade
Alex 20 A
Anna 22 A

Приклад 2: Фільтрація співробітників з департаменту "HR" і із зарплатою більше 50000

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

Оператор OR: хоча б одна умова істинна

Оператор OR використовується, коли треба вибрати рядки, що задовольняють хоча б одну з умов.

Синтаксис

SELECT колонка1, колонка2
FROM таблиця
WHERE умова OR умова2;

Приклад 1: Фільтрація студентів з оцінкою "A" або "B"

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

Результат:

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

Приклад 2: Товари з категорії "Електроніка" або з ціною менше 100

Таблиця products:

product_id name category price
1 Телевізор Електроніка 300
2 Праска Побутова техніка 50
3 Смартфон Електроніка 700
4 Чайник Побутова техніка 80
SELECT name, category, price
FROM products
WHERE category = 'Електроніка' OR price < 100;

Результат:

name category price
Телевізор Електроніка 300
Праска Побутова техніка 50
Чайник Побутова техніка 80
Смартфон Електроніка 700

Оператор NOT: інверсія умови

Якщо AND і OR задають умови, які мають бути істинними, то NOT робить усе навпаки: він вибирає рядки, для яких вказана умова хибна.

Синтаксис

SELECT колонка1, колонка2
FROM таблиця
WHERE NOT умова;

Приклад 1: Фільтрація студентів, у яких немає оцінки "A"

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

Результат:

name age grade
Maria 19 B

Приклад 2: Вибірка товарів, які не відносяться до категорії "Електроніка"

SELECT name, category, price
FROM products
WHERE NOT category = 'Електроніка';

Комбінація логічних операторів

Логічні оператори можна комбінувати для створення ще більш складних умов. Наприклад, якщо ти хочеш вибрати студентів старших 18 років і з оцінкою "A" або "B", ти можеш комбінувати AND та OR.

Синтаксис з комбінуванням

SELECT колонка1, колонка2
FROM таблиця
WHERE (умова1 AND умова2) OR умова3;

Приклад: Студенти старші 18 років з оцінкою "A" або студенти з оцінкою "B"

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

Результат:

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

Пріоритет виконання операторів

Важливо пам'ятати, що SQL виконує логічні оператори у такому порядку:

  1. NOT
  2. AND
  3. OR

Ти можеш використовувати дужки для зміни порядку виконання. Без дужок результат може бути неочікуваним!

Приклад: Порівняння з дужками і без

Що станеться у цьому запиті?

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

Цей запит вибирає студентів:

  1. Які старші 18 років і мають оцінку "A".
  2. Які мають оцінку "B".

Пріоритет виконання операторів призводить до такого ж результату, як і дужки:

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

Але якщо додати дужки:

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

Тепер будуть вибрані студенти старші 18 років з оцінкою "A" або "B". Дужки реально змінюють усе!

Типові помилки при використанні логічних операторів

  1. Забуті дужки. Це може призвести до неочікуваних результатів, особливо при комбінуванні AND та OR.
  2. Використання NOT без чіткого розуміння, які рядки виключаються.
  3. Неправильне використання логічних операторів. Наприклад, AND замість OR або навпаки.
  4. Складність умов. Дуже довгі умови з кількома AND, OR, NOT без коментарів можуть стати важкочитабельними.

Ці оператори — основа будь-яких складних запитів. Тепер ти готовий писати запити, які не просто працюють, а й знаходять саме те, що треба!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ