SQL Academy · Урок

Фильтры WHERE: операторы сравнения и логики

Фильтруйте строки с помощью =, <>, , AND, OR и NOT, а также разберитесь с приоритетом операторов и скобками

Урок 2 из 413 шагов

«Фильтры WHERE: операторы сравнения и логики» — бесплатный урок SQL Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Роль WHERE

WHERE фильтрует строки до группировки или агрегации. Возвращаются только строки, для которых предикат имеет значение TRUE.

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

Стандартные сравнения работают со всеми сопоставимыми типами:

SELECT * FROM products WHERE price > 100;
SELECT * FROM products WHERE price >= 100;
SELECT * FROM products WHERE price < 50;
SELECT * FROM products WHERE price <= 50;
SELECT * FROM products WHERE category = 'books';
SELECT * FROM products WHERE category <> 'books';   -- != also works

AND, OR, NOT

Объединяйте предикаты с помощью логических операторов:

-- Both true:
SELECT * FROM products
WHERE category = 'books' AND price < 50;

-- Either true:
SELECT * FROM products
WHERE category = 'books' OR category = 'music';

-- Negation:
SELECT * FROM products
WHERE NOT (category = 'books');

Приоритет операторов

Приоритет (от высокого к низкому): NOT → AND → OR. Для ясности всегда заключайте сложные предикаты в скобки:

-- Without parens — almost certainly wrong:
SELECT * FROM orders
WHERE status = 'open' OR status = 'pending' AND total > 100;
-- means:  status = open  OR  (status = pending AND total > 100)

-- With parens — clearer:
SELECT * FROM orders
WHERE (status = 'open' OR status = 'pending') AND total > 100;

IN и NOT IN

Сокращённая запись для множества операторов OR:

SELECT * FROM users
WHERE country IN ('US', 'CA', 'GB', 'AU');

-- Equivalent to:
SELECT * FROM users
WHERE country = 'US' OR country = 'CA' OR country = 'GB' OR country = 'AU';

BETWEEN

Проверка вхождения в диапазон с включением границ:

SELECT * FROM orders
WHERE total BETWEEN 100 AND 500;

-- Equivalent to:  total >= 100 AND total <= 500

Фильтры с безопасной обработкой NULL

Сравнения с NULL дают NULL, а не FALSE, и строки с NULL удаляются оператором WHERE. При необходимости явно используйте IS NULL / IS NOT NULL:

-- Returns users where deleted_at is unknown:
SELECT * FROM users WHERE deleted_at IS NULL;

-- IS DISTINCT FROM treats NULL as a comparable value:
SELECT * FROM events WHERE status IS DISTINCT FROM 'closed';

Столбцы BOOLEAN

Для столбца BOOLEAN сравнение не требуется:

SELECT * FROM tasks WHERE done;       -- = TRUE
SELECT * FROM tasks WHERE NOT done;    -- = FALSE or NULL
SELECT * FROM tasks WHERE done IS NOT TRUE;  -- FALSE or NULL only

Сопоставление с шаблоном с помощью LIKE

% соответствует любой строке, а _ — ровно одному символу:

SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM products WHERE sku LIKE 'A_-___';

-- Case-insensitive in PostgreSQL:
SELECT * FROM users WHERE email ILIKE '%@GMAIL.com';

Фильтры и производительность

Именно в предложениях WHERE индексы проявляют свои преимущества. Фильтры по равенству (=) и диапазону (<, BETWEEN) для индексированных столбцов превращают полное сканирование таблицы в поиск за миллисекунды.

Порядок вычисления

Логически база данных выполняет операции в таком порядке: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Поэтому WHERE видит исходные строки, а псевдонимы столбцов из SELECT ещё не определены.

-- This fails — alias not visible in WHERE:
SELECT total * 0.9 AS discounted
FROM orders WHERE discounted > 100;     -- ERROR

-- Repeat the expression instead, or wrap in a subquery.

Итоги

WHERE — Ваш основной инструмент для выбора строк.

  • Стандартные операторы сравнения и логические операторы
  • Заключайте смешанные условия AND/OR в скобки
  • Используйте IS NULL — никогда не используйте = NULL
  • WHERE для индексированных столбцов работает быстро

Быстрая проверка

Какой предикат оставляет только строки, где возраст больше или равен 18, а страна — US?

Можно начать бесплатно

Изучай SQL с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
46
Уроки
183

Часто задаваемые вопросы

Урок «Фильтры WHERE: операторы сравнения и логики» бесплатный?

Да — полный текст урока «Фильтры WHERE: операторы сравнения и логики» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «Фильтры WHERE: операторы сравнения и логики»?

Фильтруйте строки с помощью =, <>, , AND, OR и NOT, а также разберитесь с приоритетом операторов и скобками Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Фильтры WHERE: операторы сравнения и логики»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Выбор столбцов и выражений
  2. Фильтры WHERE: операторы сравнения и логики
  3. ORDER BY для одного и нескольких столбцов
  4. Основы LIMIT, OFFSET и разбиения на страницы
← Назад к SQL Academy