SQLLab
Теория· 5 мин· 10 XP

WHERE — зачем нужна фильтрация

Зачем это нужно

SELECT * возвращает все 36 товаров сразу. Но в реальной работе нужны конкретные строки: только электроника, только товары дороже 5000 ₽, только то, что есть на складе. WHERE — это фильтр, который оставляет только нужные строки.

Аналогия с Excel

В Excel вы нажимаете автофильтр на заголовке столбца и выбираете нужное значение. WHERE делает то же самое, только через текст запроса.

код
Excel: Фильтр по категории → выбираем "Электроника"
SQL:   WHERE category = 'Электроника'

Как база выполняет фильтрацию

После FROM products PostgreSQL берёт все 36 строк. Затем проверяет каждую: выполняется ли условие WHERE? Если да — строка попадает в результат.

код
products (36 строк)
    ↓ WHERE category = 'Книги'
результат (7 строк — только книги)

Синтаксис

sql
SELECT колонки
FROM таблица
WHERE условие;

Условие ставится после FROM, перед ORDER BY:

sql
SELECT name, price
FROM products
WHERE category = 'Электроника'
ORDER BY price DESC;

Разбор примера

sql
SELECT name, price, stock   -- хотим видеть название, цену, остаток
FROM products               -- из таблицы products
WHERE stock = 0;            -- только товары с нулевым остатком

Этот запрос вернёт товары, которые закончились на складе.

Частые ошибки

WHERE после ORDER BY — неправильный порядок. Всегда: SELECT → FROM → WHERE → ORDER BY.

Забыли WHERE — если условие нужно, но написали запрос без WHERE, результат придёт по всей таблице. Всегда проверяйте количество строк.

Запомни

WHERE фильтрует строки до того, как SELECT выбирает колонки. Без WHERE — возвращаются все строки таблицы.


Микро-практика

Разберите запрос:

sql
SELECT name, price FROM products WHERE price > 10000 ORDER BY price;
  • Что делает этот запрос?
  • Что убрать, чтобы получить все товары?
Ответы
  • Выбирает названия и цены товаров дороже 10 000 ₽, сортирует по цене
  • Убрать WHERE price > 10000

Прочитайте урок до конца — прогресс засчитается автоматически