Оператор SELECT сам по себе возвращает все строки из таблицы. Однако в реальных сценариях вам обычно требуется только подмножество данных, соответствующих определенным критериям. Именно здесь на помощь приходит условие WHERE.
Условие WHERE используется для фильтрации записей. Оно гарантирует, что в результирующий набор попадут только те строки, которые удовлетворяют заданному условию.
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Условие — это выражение, которое возвращает значение «истина» (true), «ложь» (false) или «неизвестно» (unknown, если задействованы значения NULL). Возвращаются только те строки, для которых условие оценивается как true.
SQL предоставляет множество операторов для сравнения значений в условии WHERE:
| Оператор | Описание | Пример |
|---|---|---|
= | Равно | WHERE last_name = 'SMITH' |
<> или != | Не равно | WHERE store_id <> 1 |
> | Больше | WHERE rental_rate > 2.99 |
< | Меньше | WHERE length < 60 |
>= | Больше или равно | WHERE replacement_cost >= 20.00 |
<= | Меньше или равно | WHERE amount <= 5.00 |
Чтобы найти фильмы со стоимостью аренды $4.99 из таблицы film:
SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate = 4.99;
SQL включает мощные операторы для работы с диапазонами, наборами и шаблонами.
Фильтрует значения в определенном диапазоне (включительно).
-- Найти платежи от $5.00 до $10.00
SELECT payment_id, amount, payment_date
FROM payment
WHERE amount BETWEEN 5.00 AND 10.00;
Ищет соответствие любому значению из указанного списка.
-- Найти клиентов из конкретных магазинов
SELECT first_name, last_name, store_id
FROM customer
WHERE store_id IN (1, 2);
Ищет указанный шаблон в столбце с использованием подстановочных знаков:
% представляет ноль, один или несколько символов._ представляет один символ.-- Найти фильмы, название которых начинается на 'A'
SELECT title
FROM film
WHERE title LIKE 'A%';
-- Найти фильмы, где вторая буква 'I'
SELECT title
FROM film
WHERE title LIKE '_I%';
Как мы узнали в уроке о NULL, вы не можете использовать = или <> для проверки на NULL. Вы должны использовать IS NULL или IS NOT NULL.
-- Неправильно
-- WHERE return_date = NULL
-- Правильно
SELECT rental_id, rental_date, return_date
FROM rental
WHERE return_date IS NULL;
Основные выводы из этого урока:
WHERE фильтрует строки до того, как они будут возвращены в результирующий набор.'SMITH').LIKE для поиска по шаблону и IN для сравнения со списком значений.= с NULL; всегда используйте IS NULL.В следующем уроке мы изучим, как объединять несколько условий, чтобы создавать еще более мощные фильтры.