Фильтрация данных с помощью условия 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;
Этот запрос выберет только те строки, которые соответствуют всем трём условиям.