Learnly
SQL для аналитиков/Глава 5/Урок 1

WHERE: фильтруем строки

WHERE: фильтруем строки

SELECT без WHERE возвращает все строки. WHERE позволяет взять только нужные.

Зачем нужен WHERE

Представь таблицу из миллиона заказов. Тебе нужны заказы за последний месяц из Москвы. Без WHERE, выгружаешь миллион строк и фильтруешь в Excel. С WHERE, база возвращает только нужные.

Это не просто удобство, это разница между секундой и минутой.

Синтаксис

SELECT столбцы
FROM таблица
WHERE условие;

Простые примеры

-- Все пользователи из Москвы
SELECT * FROM users WHERE city = 'Москва';

-- Пользователи старше 25 лет
SELECT * FROM users WHERE age > 25;

-- Заказы на сумму больше 10 000
SELECT * FROM orders WHERE amount > 10000;

Операторы сравнения

WHERE age = 25      -- равно
WHERE age != 25     -- не равно (также: <>)
WHERE age > 25      -- больше
WHERE age < 25      -- меньше
WHERE age >= 25     -- больше или равно
WHERE age <= 25     -- меньше или равно

Поиск по тексту: LIKE

-- Имена начинающиеся на А
WHERE name LIKE 'А%'

-- Имена заканчивающиеся на "ов"
WHERE name LIKE '%ов'

-- Содержит "лек"
WHERE name LIKE '%лек%'

%, любое количество любых символов. _, ровно один символ.

В PostgreSQL есть ILIKE, поиск без учёта регистра:

WHERE name ILIKE '%alex%'  -- найдёт Alex, ALEX, alex

Фильтрация NULL

NULL нельзя сравнивать через =. Нужен специальный синтаксис:

-- Найти записи без email
WHERE email IS NULL

-- Найти записи с email
WHERE email IS NOT NULL

💡 Частая ошибка: WHERE email = NULL, не работает! Всегда используй IS NULL и IS NOT NULL.