Основы выборки: SELECT, фильтрация и сортировка

WHERE: фильтрация строк

Содержание курса

В прошлом уроке мы выбирали, какие столбцы вернуть и как их назвать. Сейчас займёмся другим измерением — какие строки вообще попадут в результат. Именно это делает WHERE.

WHERE и операторы сравнения: механизм фильтрации строк

WHERE записывается сразу после FROM и содержит условие — логическое выражение, которое вычисляется для каждой строки таблицы. Если оно равно TRUE, строка включается в результат. Если FALSE или NULL — отбрасывается. Никакого исключения: именно три возможных значения (TRUE / FALSE / NULL) определяют судьбу строки.

Предположим, таблица products содержит столбцы product_id, title и price. Самый прямой запрос:

SELECT title, price
FROM products
WHERE price > 10000;

SQL проходит по каждой строке, подставляет значение price и проверяет неравенство. Строки с price 32 000 или 15 000 проходят; строки с price 1 200 — нет.

Шесть операторов сравнения работают предсказуемо:

  • = — равно (для чисел и строк)
  • <> — не равно
  • <, > — строго меньше / больше
  • <=, >= — меньше или равно / больше или равно

Пример с точным совпадением:

SELECT title, price
FROM products
WHERE price = 1200;

А вот обратный случай:

SELECT title, price
FROM products
WHERE price <> 1200;

Операторы сравнения работают и со строками. WHERE title = 'Мышь' найдёт строку с точным совпадением названия. Сравнение строк идёт лексикографически, поэтому > и < для строк тоже имеют смысл, хотя на практике их используют реже, чем для чисел.

Анимация последовательной проверки строк таблицы условием WHERE price больше или равно 500 и переноса подходящих строк в результат
WHERE проверяет строки и оставляет подходящие