Теория· 5 мин· 10 XP
Скобки и приоритет операторов
Зачем это нужно
Когда в запросе несколько логических операторов — результат зависит от порядка их выполнения. Неверный приоритет = неверный результат, и ошибка может быть незаметной: запрос выполняется, но возвращает не те строки.
Порядок выполнения
код
1. NOT
2. AND
3. OR
Пример без скобок — ловушка
sql
WHERE category = 'Книги' OR category = 'Спорт' AND price < 1000
Это читается как:
код
category = 'Книги'
OR
(category = 'Спорт' AND price < 1000)
Результат: все книги (любой цены) + спорт дешевле 1000 ₽.
Пример со скобками — явный смысл
sql
WHERE (category = 'Книги' OR category = 'Спорт') AND price < 1000
Результат: из категорий «Книги» и «Спорт» только те, что дешевле 1000 ₽.
Правило
Если в одном WHERE есть и
ANDиOR— всегда расставляйте скобки.
Практический пример
sql
SELECT name, category, price
FROM products
WHERE (category = 'Электроника' OR category = 'Книги')
AND price < 5000
ORDER BY category, price;
Запомни
Скобки в SQL — это не только математика, но и документация намерений. Расставляйте их всегда, когда смешиваете AND и OR.
Микро-практика
Что вернёт запрос:
sql
WHERE category = 'A' OR category = 'B' AND price > 100
Как исправить, чтобы получить (A или B) с ценой > 100?
Ответ
Без скобок: все A (любой цены) + B с ценой > 100.
Исправленный вариант:
sql
WHERE (category = 'A' OR category = 'B') AND price > 100
Прочитайте урок до конца — прогресс засчитается автоматически