Як працювати з пріоритетом логічних операторів?
Пріоритет логічних операторів (NOT, AND, OR) визначає, у якому порядку SQL перевірятиме умови у фільтрі WHERE.
Якщо порядок не задати явно - SQL виконає їх за своїми правилами, а не за твоєю логікою.
Стандартний порядок пріоритетів
NOT- виконується першим;AND- виконується другим;OR- виконується останнім.
Приклад без дужок
sql
SELECT *
FROM employees
WHERE NOT city = 'Kyiv' AND department = 'IT' OR salary > 80000;SQL виконає так:
- Спершу застосує
NOT city = 'Kyiv'; - Потім перевірить
AND department = 'IT'; - І лише потім
OR salary > 80000.
Тобто обере всіх IT-шників не з Києва чи всіх, у кого зарплата більша за 80 000 - навіть якщо вони з Києва й не з IT.
Як змінити пріоритет
Щоб SQL виконував умови в потрібному порядку, використовують дужки:
sql
WHERE NOT (city = 'Kyiv' AND department = 'IT')Тепер NOT застосовується до всього виразу всередині дужок.
Ще приклад:
sql
WHERE (city = 'Kyiv' OR city = 'Lviv') AND salary > 70000;Спершу перевіряться міста, потім фільтр за зарплатою.
Коротко:
| Оператор | Пріоритет | Приклад використання |
|---|---|---|
NOT | 1 | NOT city = 'Kyiv' |
AND | 2 | age > 18 AND city = 'Kyiv' |
OR | 3 | city = 'Kyiv' OR city = 'Lviv' |
Підсумок:
- SQL завжди йде за пріоритетом:
NOT→AND→OR. - Щоб задати свій порядок, став дужки.
- Краще завжди використовувати дужки у складних фільтрах - це робить код читабельним і передбачуваним.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.