Фильтрация данных: WHERE, операторы сравнения (=, <>, >, <, >=, <=)
Что такое фильтрация данных и зачем она нужна? 🔍
Представьте, что у вас есть гигантский склад с тысячами коробок. Вам нужна всего одна коробка с определенной маркировкой. Фильтрация данных в SQL — это именно тот инструмент, который помогает найти нужные "коробки" (строки) в вашей базе данных!
Ключевой инструмент для этого — оператор WHERE. Он работает как фильтр, отсеивая ненужные данные и оставляя только те, которые соответствуют заданным условиям.
Синтаксис WHERE — основа основ 📐
Оператор WHERE используется в связке с SELECT (и другими DML-операторами). Вот его базовый синтаксис:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Где condition — это логическое выражение, которое может включать:
- Операторы сравнения (
=,<>,>,<,>=,<=) - Логические операторы (
AND,OR,NOT) - Специальные операторы (
LIKE,IN,BETWEEN)
Сегодня мы фокусируемся именно на операторах сравнения — фундаменте фильтрации!
Операторы сравнения в действии ⚖️
Давайте разберём каждый оператор на конкретных примерах. Представим, что у нас есть таблица employees с данными о сотрудниках:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(50),
salary DECIMAL(10, 2),
hire_date DATE
);
1. Равно (=) — точное совпадение
Найдем всех сотрудников из отдела 'Marketing':
SELECT name, salary
FROM employees
WHERE department = 'Marketing';
2. Не равно (<>) — исключение значений
Выберем всех сотрудников, которые НЕ работают в 'IT':
SELECT name, department
FROM employees
WHERE department <> 'IT';
💡 В некоторых СУБД (например, MySQL) можно также использовать != вместо <> — результат будет идентичным.
3. Больше (>) и Меньше (<) — числовые диапазоны
Найдем сотрудников с зарплатой выше 50000:
SELECT name, salary
FROM employees
WHERE salary > 50000;
А теперь — тех, кто получает меньше 40000:
SELECT name, salary
FROM employees
WHERE salary < 40000;
4. Больше или равно (>=) и Меньше или равно (<=) — включительные границы
Выберем сотрудников с зарплатой от 40000 до 60000 (включительно):
SELECT name, salary
FROM employees
WHERE salary >= 40000 AND salary <= 60000;
Комбинирование условий 🧩
Настоящая мощь WHERE раскрывается при комбинировании условий! Давайте найдем всех сотрудников из отдела 'Sales' с зарплатой выше 45000:
SELECT name, department, salary
FROM employees
WHERE department = 'Sales' AND salary > 45000;
А теперь — сотрудников либо из 'HR', либо с зарплатой менее 35000:
SELECT name, department, salary
FROM employees
WHERE department = 'HR' OR salary < 35000;
Особенности работы с датами 📅
Фильтрация по датам — частая задача. Найдем сотрудников, принятых на работу после 1 января 2020 года:
SELECT name, hire_date
FROM employees
WHERE hire_date > '2020-01-01';
💡 Обратите внимание на формат даты — 'YYYY-MM-DD' является стандартом в SQL.
Частые ошибки и как их избежать 🚧
-
Путаница с кавычками: для текстовых значений используем одинарные кавычки (
'Marketing'), для чисел — без кавычек (50000). -
Регистр символов: в некоторых СУБД сравнение строк чувствительно к регистру.
'marketing'и'Marketing'могут считаться разными значениями! -
NULL-значения: операторы сравнения не работают с NULL. Для проверки на NULL используйте
IS NULLилиIS NOT NULL.
Практика — лучший учитель! 💻
Давайте закрепим знания на более сложном примере. Найдем всех сотрудников: - Из отделов 'Finance' или 'Operations' - С зарплатой от 40000 до 80000 - Принятых на работу после 2018 года
SELECT name, department, salary, hire_date
FROM employees
WHERE (department = 'Finance' OR department = 'Operations')
AND salary BETWEEN 40000 AND 80000
AND hire_date > '2018-12-31';
Обратите внимание на:
- Группировку условий скобками
- Использование
BETWEENдля диапазона (альтернатива>= AND <=) - Четкое указание даты
Что дальше? 🚀
Теперь, когда вы освоили базовые операторы сравнения, вы готовы к более сложным условиям фильтрации! В следующих уроках мы разберём:
- Шаблонный поиск с
LIKE - Работу с множествами (
IN,NOT IN) - Специальные операторы (
BETWEEN,IS NULL)
Попробуйте применить эти знания к своим данным — создавайте запросы, экспериментируйте с условиями, и вы быстро станете мастером фильтрации!