Занятие 02. Оператор WHERE. Специальное значение NULL
⚡ Кратко: суть темы
Занятие учит фильтровать строки в SQL-запросах с помощью оператора WHERE. Мы разберём операторы сравнения, логические операторы AND/OR/NOT, поиск по маске LIKE, множественный выбор IN и BETWEEN, а также правила работы со специальным значением NULL.
WHEREидёт послеFROMи отбирает только подходящие строки.- Операторы сравнения:
=,<>/!=,<,<=,>,>=. LIKEиспользует%(любые символы) и_(один символ).NULL— отсутствие значения; для проверки используются толькоIS NULLиIS NOT NULL.
Что запомнить: NULL = NULL не истинно — никогда не сравнивайте NULL обычными операторами.
Частая ошибка: писать WHERE column = NULL вместо WHERE column IS NULL.
📖 Оператор WHERE
Оператор WHERE ограничивает выборку, оставляя только те строки, которые удовлетворяют заданному условию. Он размещается после FROM и является необязательным, но на практике используется почти всегда.
SELECT column1, column2
FROM table_name
WHERE condition;
В условии могут участвовать константы, литералы, имена столбцов, функции и операторы сравнения.
📖 Операторы сравнения
| Символ | Значение |
|---|---|
= | равенство |
<> или != | неравенство |
< | меньше |
<= | меньше или равно |
> | больше |
>= | больше или равно |
📖 Логические операторы
AND— истинно, если оба условия истинны.OR— истинно, если хотя бы одно условие истинно.NOT— инвертирует результат сравнения.
Приоритет: сначала выполняются арифметические операции, затем операторы сравнения, затем логические. Для управления порядком используйте скобки.
📖 Поиск по маске: LIKE
LIKE сравнивает строку с шаблоном:
%— любое количество любых символов (в том числе ноль)._— ровно один любой символ.
-- имена на букву A
WHERE first_name LIKE 'A%'
-- города, заканчивающиеся на 'mond'
WHERE city LIKE '%mond'
📖 Множественный выбор: IN и BETWEEN
IN проверяет вхождение значения в список. Это краткая запись нескольких OR.
WHERE ship_city IN ('Chicago', 'Miami');
BETWEEN выбирает значения в диапазоне включительно. Эквивалент >= и <=.
WHERE shipping_fee BETWEEN 10 AND 15;
📖 Специальное значение NULL
NULL означает «значение неизвестно» или «данные отсутствуют». Оно не равно ничему, включая другое NULL. Поэтому нельзя писать column = NULL.
Для проверки используются:
IS NULL— значение отсутствует.IS NOT NULL— значение присутствует.
WHERE shipped_date IS NULL;