SQL код скопирован в буфер обмена
Этот урок по SQL посвящен фильтрации строк с использованием предложения WHERE. Узнайте, как использовать операторы сравнения, фильтры диапазона с BETWEEN, сопоставление со списками с IN и поиск по шаблону с LIKE. В уроке также рассматривается критически важное различие в обработке значений NULL с помощью IS NULL и IS NOT NULL. Освойте методы фильтрации данных для получения точной информации и оптимизации запросов к базе данных для эффективного анализа.
EN PT

Урок 2.2 Фильтрация строк: Условие WHERE

Фильтрация данных с помощью условия WHERE

Оператор SELECT сам по себе возвращает все строки из таблицы. Однако в реальных сценариях вам обычно требуется только подмножество данных, соответствующих определенным критериям. Именно здесь на помощь приходит условие WHERE.

Что такое условие 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

Пример (база данных Sakila)

Чтобы найти фильмы со стоимостью аренды $4.99 из таблицы film:

SELECT title, rental_rate, replacement_cost
FROM film
WHERE rental_rate = 4.99;

Специальные операторы фильтрации

SQL включает мощные операторы для работы с диапазонами, наборами и шаблонами.

1. BETWEEN

Фильтрует значения в определенном диапазоне (включительно).

-- Найти платежи от $5.00 до $10.00
SELECT payment_id, amount, payment_date
FROM payment
WHERE amount BETWEEN 5.00 AND 10.00;

2. IN

Ищет соответствие любому значению из указанного списка.

-- Найти клиентов из конкретных магазинов
SELECT first_name, last_name, store_id
FROM customer
WHERE store_id IN (1, 2);

3. LIKE

Ищет указанный шаблон в столбце с использованием подстановочных знаков:

  • % представляет ноль, один или несколько символов.
  • _ представляет один символ.

Пример (база данных Sakila)

-- Найти фильмы, название которых начинается на 'A'
SELECT title
FROM film
WHERE title LIKE 'A%';

-- Найти фильмы, где вторая буква 'I'
SELECT title
FROM film
WHERE title LIKE '_I%';

Ловушка: Фильтрация значений NULL

Как мы узнали в уроке о NULL, вы не можете использовать = или <> для проверки на NULL. Вы должны использовать IS NULL или IS NOT NULL.

Пример (база данных Sakila)

-- Неправильно
-- 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.

В следующем уроке мы изучим, как объединять несколько условий, чтобы создавать еще более мощные фильтры.