Фильтрация данных с помощью условия WHERE — важная часть работы с SQL-запросами, позволяющая выбирать только те строки, которые соответствуют заданным критериям. Условие WHERE используется в команде SELECT, а также в других командах, таких как UPDATE и DELETE, когда нужно выбрать определённые записи для обновления или удаления.
Синтаксис WHERE
SELECT столбец1, столбец2, ... FROM имя_таблицы WHERE условие;
Вместо условие можно подставить выражения, которые проверяют значения в столбцах на соответствие определённым критериям. Это могут быть сравнительные операторы, логические операторы и функции для работы со строками и числами.
Основные операторы условия WHERE
1. Сравнительные операторы
Используются для сравнения значений в таблице:
= — равно
<> или != — не равно
< — меньше
> — больше
<= — меньше или равно
>= — больше или равно
Пример
SELECT * FROM employees WHERE age > 30;
Этот запрос вернёт всех сотрудников, возраст которых больше 30 лет.
2. Оператор BETWEEN
Позволяет выбрать строки, где значения находятся в определённом диапазоне.
SELECT * FROM employees WHERE age BETWEEN 25 AND 35;
Этот запрос выберет всех сотрудников, чей возраст находится между 25 и 35 годами включительно.
3. Оператор IN
Используется для проверки наличия значения в указанном списке.
SELECT * FROM employees WHERE department IN ('Sales', 'Marketing');
Здесь будут выбраны только те сотрудники, которые работают в отделах Sales или Marketing.
4. Оператор LIKE
Используется для поиска строк по шаблону и особенно полезен для фильтрации текстовых данных. В SQLite можно использовать следующие подстановочные символы:
% — заменяет любое количество символов (включая ноль символов).
_ — заменяет один любой символ.
SELECT * FROM employees WHERE name LIKE 'A%';
Этот запрос выберет всех сотрудников, чьи имена начинаются на "A".
5. Оператор IS NULL / IS NOT NULL
Позволяет фильтровать строки с пустыми (NULL) или непустыми значениями.
SELECT * FROM employees WHERE email IS NULL;
Здесь будут выбраны только те сотрудники, у которых нет адреса электронной почты.
Логические операторы
Для более сложных условий можно комбинировать несколько условий с помощью логических операторов:
AND — возвращает строки, где все условия выполняются.
OR — возвращает строки, где хотя бы одно условие выполняется.
NOT — возвращает строки, где условие не выполняется.
Пример с AND
SELECT * FROM employees WHERE department = 'Sales' AND age > 30;
Этот запрос выберет всех сотрудников из отдела Sales, чей возраст больше 30 лет.
Пример с OR
SELECT * FROM employees WHERE department = 'Sales' OR department = 'Marketing';
Здесь будут выбраны все сотрудники, которые работают либо в отделе Sales, либо в отделе Marketing.
Пример с NOT
SELECT * FROM employees WHERE NOT age > 50;
Этот запрос выберет всех сотрудников, чей возраст не превышает 50 лет.
Сочетание условий с помощью скобок
Когда в запросе используются несколько условий с разными операторами (AND, OR), можно добавить скобки, чтобы управлять порядком выполнения.
SELECT * FROM employees WHERE (department = 'Sales' OR department = 'Marketing') AND age > 30;
Этот запрос вернёт сотрудников, работающих в отделах Sales или Marketing, при этом их возраст должен быть старше 30 лет.
Пример: Использование WHERE в запросе SELECT
Предположим, у нас есть таблица employees со следующими столбцами: employee_id, name, department, age, salary, email.
Мы хотим выбрать всех сотрудников, которые работают в отделе IT, получают зарплату больше 5000 и у которых есть адрес электронной почты:
SELECT name, age, salary, email
FROM employees
WHERE department = 'IT' AND salary > 5000 AND email IS NOT NULL;
Этот запрос выберет только те строки, которые соответствуют всем трём условиям.
Разница между = и IS в SQLite
В SQLite операторы = и IS могут выглядеть похожими, но имеют важные различия в работе, особенно при сравнении с NULL значениями.
Основные различия
| Оператор |
Описание |
Работа с NULL |
= |
Оператор сравнения значений |
Не работает с NULL (NULL = NULL → NULL) |
IS |
Оператор проверки идентичности |
Специально для NULL (NULL IS NULL → TRUE) |