Логические операторы: AND, OR, NOT

🔍 Что такое логические операторы?

Логические операторы в SQL — это инструменты, которые позволяют комбинировать несколько условий в запросах. Они помогают фильтровать данные более гибко и точно. Основные операторы:

  • ANDИ (все условия должны быть истинными)
  • ORИЛИ (хотя бы одно условие должно быть истинным)
  • NOTНЕ (инверсия условия)

🧩 Оператор AND: строгий фильтр

Используется, когда нужно, чтобы все указанные условия выполнялись одновременно.

-- Пример: найти сотрудников из отдела IT с зарплатой больше 5000
SELECT name, department, salary
FROM employees
WHERE department = 'IT' AND salary > 5000;

📌 Важно: AND работает как жесткий фильтр. Если хотя бы одно условие не выполняется, строка не попадет в результат.


🎲 Оператор OR: гибкий выбор

Применяется, когда достаточно выполнения хотя бы одного из условий.

-- Пример: найти сотрудников из отдела Sales ИЛИ Marketing
SELECT name, department
FROM employees
WHERE department = 'Sales' OR department = 'Marketing';

⚠️ Особенность: OR может возвращать больше строк, чем вы ожидаете, поэтому важно точно формулировать условия.


🔄 Оператор NOT: инверсия условия

Позволяет исключить строки, соответствующие указанному условию.

-- Пример: все сотрудники, НЕ работающие в IT
SELECT name, department
FROM employees
WHERE NOT department = 'IT';

💡 Совет: NOT можно заменить оператором != или <>, но иногда NOT читается лучше, особенно в сложных условиях.


🧠 Комбинирование операторов

Логические операторы можно сочетать для создания сложных условий. Используйте скобки для группировки!

-- Пример: сотрудники из IT с зарплатой > 5000 ИЛИ из Sales с зарплатой > 7000
SELECT name, department, salary
FROM employees
WHERE (department = 'IT' AND salary > 5000)
   OR (department = 'Sales' AND salary > 7000);

📌 Правило приоритета: NOT > AND > OR. Скобки меняют порядок вычислений.


🚀 Практика: реалистичные примеры

Пример 1: Фильтрация заказов

-- Заказы стоимостью от 100 до 500 ИЛИ от 1000, но только не от клиента ID 5
SELECT order_id, customer_id, amount
FROM orders
WHERE (amount BETWEEN 100 AND 500 OR amount >= 1000)
  AND NOT customer_id = 5;

Пример 2: Поиск пользователей

-- Найти активных пользователей из Москвы ИЛИ Санкт-Петербурга,
-- но не администраторов
SELECT username, city, is_admin
FROM users
WHERE (city = 'Москва' OR city = 'Санкт-Петербург')
  AND is_active = TRUE
  AND NOT is_admin = TRUE;

💡 Полезные советы

  1. Всегда проверяйте логику сложных условий — рисуйте схемы или тестируйте на небольших данных.
  2. Используйте скобки для явного указания порядка операций, даже если приоритет вам кажется очевидным.
  3. Для лучшей читаемости форматируйте сложные запросы с отступами, как в примерах выше.
  4. Помните, что WHERE NOT condition — это то же самое, что WHERE condition = FALSE (для булевых значений).

📌 Итоги

Логические операторы — мощный инструмент для точной фильтрации данных:

  • AND требует выполнения всех условий
  • OR допускает выполнение любого из условий
  • NOT инвертирует условие

Комбинируйте их с умом, используйте скобки для сложных условий, и ваши запросы станут намного выразительнее!

Скрыть рекламу навсегда

🎥 YouTube: программирование простым языком

Канал, где я спокойно и по шагам объясняю сложные темы — без заумных терминов и лишней теории.

Подходит, если раньше «не заходило», но хочется наконец понять.

▶️ Смотреть курсы на YouTube