Логічні оператори — це інструменти, які допомагають об'єднувати умови в запитах для більш складної фільтрації даних. Скоріш за все, ти вже зустрічав їх у мовах програмування. Якщо порівнювати запити з програмою фільтрації спаму в поштовій скриньці, то логічні оператори можна уявити як правила, за якими листи потрапляють у папку "Спам" або залишаються у "Вхідних".
SQL — це інструмент, який часто використовують для вибірки або аналізу даних. Логічні оператори (AND, OR, NOT) дозволяють комбінувати кілька умов в одному запиті, щоб відповідати на більш складні питання, наприклад:
- Які студенти старші 18 років і мають оцінку "A"?
- Які товари відносяться до категорії "Електроніка" або "Побутова техніка"?
- Які клієнти не здійснювали покупок?
Давай розглянемо три головних логічних оператори в SQL:
AND: обидві умови мають бути істинними.OR: хоча б одна з умов має бути істинною.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 виконує логічні оператори у такому порядку:
NOTANDOR
Ти можеш використовувати дужки для зміни порядку виконання. Без дужок результат може бути неочікуваним!
Приклад: Порівняння з дужками і без
Що станеться у цьому запиті?
SELECT name, age, grade
FROM students
WHERE age > 18 AND grade = 'A' OR grade = 'B';
Цей запит вибирає студентів:
- Які старші 18 років і мають оцінку "A".
- Які мають оцінку "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". Дужки реально змінюють усе!
Типові помилки при використанні логічних операторів
- Забуті дужки. Це може призвести до неочікуваних результатів, особливо при комбінуванні
ANDтаOR. - Використання
NOTбез чіткого розуміння, які рядки виключаються. - Неправильне використання логічних операторів. Наприклад,
ANDзамістьORабо навпаки. - Складність умов. Дуже довгі умови з кількома
AND,OR,NOTбез коментарів можуть стати важкочитабельними.
Ці оператори — основа будь-яких складних запитів. Тепер ти готовий писати запити, які не просто працюють, а й знаходять саме те, що треба!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ