Для чего используется оператор WHERE в SQL?

Ответ

Оператор WHERE используется в SQL-запросах для фильтрации строк на основе заданного условия. Он указывается после FROM в командах SELECT, UPDATE, DELETE.

Базовый синтаксис:

SELECT column1, column2
FROM table_name
WHERE condition;

Примеры условий:

  • Сравнение: WHERE age >= 18
  • Равенство / Неравенство: WHERE status = 'active' или WHERE id <> 5
  • Диапазон: WHERE salary BETWEEN 50000 AND 100000
  • Принадлежность списку: WHERE department_id IN (10, 20, 30)
  • Поиск по шаблону: WHERE name LIKE 'A%' (начинается на 'A')
  • Работа с NULL: WHERE email IS NOT NULL (операторы = NULL или <> NULL не работают)

Комбинирование условий:

SELECT * FROM orders
WHERE 
    order_date >= '2024-01-01'
    AND (status = 'shipped' OR status = 'processed')
    AND total_amount > 1000;

Важно: Условие в WHERE выполняется до группировки (GROUP BY) и агрегации. Для фильтрации результатов агрегатных функций используйте HAVING.

Ответ 18+ 🔞

Ну слушай, смотри, оператор WHERE — это такая палочка-выручалочка, когда тебе из всей этой кучи данных в таблице нужно выковырять только то, что тебе реально надо. Без него как без рук, честно. Представь, у тебя таблица с пользователями, а тебе нужны только те, кто старше 18. Вот тут он и вступает в игру, этот самый WHERE.

Как он выглядит, этот зверь?

SELECT column1, column2
FROM table_name
WHERE condition;

Всё просто: выбрали столбцы, указали откуда, а потом — бац — и условие. Как в жизни: «Дай мне всё, но только если...».

А условия-то какие бывают? Да всякие, на любой вкус и цвет, блядь.

  • Сравнить что-то: WHERE age >= 18 — ну тут всё ясно, взрослые дяди и тёти.
  • Найти точное совпадение (или наоборот): WHERE status = 'active' или WHERE id <> 5. Второе, кстати, читай как «айдишник не равен пяти», а то != тоже иногда пишут, ёпта.
  • Взять из какого-то диапазона: WHERE salary BETWEEN 50000 AND 100000. Зарплата от и до — мечта, а не условие.
  • Проверить, входит ли в список: WHERE department_id IN (10, 20, 30). Типа «или из десятого отдела, или из двадцатого, или из тридцатого».
  • Поискать что-то по маске: WHERE name LIKE 'A%'. Это значит «имя начинается на 'A'». Процентик — он волшебный, заменяет всё что угодно.
  • Работа с пустотой (NULL): Вот тут внимание, ебать мои старые костыли! WHERE email IS NOT NULL — это правильно. А писать = NULL — это верный способ нихуя не получить, потому что NULL — это не значение, а состояние «хз чё тут». Запомни: IS NULL или IS NOT NULL.

А если условий много? Да хуй с ним, комбинируй!

SELECT * FROM orders
WHERE 
    order_date >= '2024-01-01'
    AND (status = 'shipped' OR status = 'processed')
    AND total_amount > 1000;

Перевод на человеческий: «Дай мне все заказы с начала года, которые либо отправлены, либо в обработке, и чтобы сумма была больше тысячи». Логика AND/OR — твои лучшие друзья, главное скобки не перепутай, а то получится пиздец, а не выборка.

И главное, запомни раз и навсегда, чувак: WHERE фильтрует строки ДО того, как SQL начнёт их группировать (GROUP BY) или считать какие-то суммы. Если тебе нужно отфильтровать уже сгруппированные и посчитанные результаты — это уже другая история, про HAVING. Но это, как говорится, совсем другая песня, в рот меня чих-пых.