WHERE — зачем нужна фильтрация
Зачем это нужно
SELECT * возвращает все 36 товаров сразу. Но в реальной работе нужны
конкретные строки: только электроника, только товары дороже 5000 ₽, только то,
что есть на складе. WHERE — это фильтр, который оставляет только нужные строки.
Аналогия с Excel
В Excel вы нажимаете автофильтр на заголовке столбца и выбираете нужное значение. WHERE делает то же самое, только через текст запроса.
Excel: Фильтр по категории → выбираем "Электроника"
SQL: WHERE category = 'Электроника'
Как база выполняет фильтрацию
После FROM products PostgreSQL берёт все 36 строк. Затем проверяет каждую:
выполняется ли условие WHERE? Если да — строка попадает в результат.
products (36 строк)
↓ WHERE category = 'Книги'
результат (7 строк — только книги)
Синтаксис
SELECT колонки
FROM таблица
WHERE условие;
Условие ставится после FROM, перед ORDER BY:
SELECT name, price
FROM products
WHERE category = 'Электроника'
ORDER BY price DESC;
Разбор примера
SELECT name, price, stock -- хотим видеть название, цену, остаток
FROM products -- из таблицы products
WHERE stock = 0; -- только товары с нулевым остатком
Этот запрос вернёт товары, которые закончились на складе.
Частые ошибки
WHERE после ORDER BY — неправильный порядок. Всегда:
SELECT → FROM → WHERE → ORDER BY.
Забыли WHERE — если условие нужно, но написали запрос без WHERE, результат придёт по всей таблице. Всегда проверяйте количество строк.
Запомни
WHERE фильтрует строки до того, как SELECT выбирает колонки. Без WHERE —
возвращаются все строки таблицы.
Микро-практика
Разберите запрос:
SELECT name, price FROM products WHERE price > 10000 ORDER BY price;
- Что делает этот запрос?
- Что убрать, чтобы получить все товары?
Ответы
- Выбирает названия и цены товаров дороже 10 000 ₽, сортирует по цене
- Убрать
WHERE price > 10000
Прочитайте урок до конца — прогресс засчитается автоматически