Итак, мы уже знаем как можно использовать команду SELECT. Ну, по крайней мере, мы научились извлекать данные из базы, выбирать нужные столбцы и создавать запросы, которые начинают превращать сырые данные в полезную информацию. Настало время добавить в нашу магическую палитру немного "фильтров". Да, сегодня мы поговорим о фильтрации данных с помощью таких операторов сравнения, как =, >, < и <>.
Когда вы работаете с большими таблицами, то, скорее всего, вам не нужно просматривать абсолютно все данные (разве что вы хотите погрузиться в хаос). Чтобы выделить только нужные строки, в SQL используется ключевое слово WHERE. Оно позволяет задавать условия, которые должна удовлетворять каждая строка, чтобы попасть в результаты запроса. А для этих условий используются операторы сравнения.
Синтаксис фильтрации с WHERE
SELECT колонка1, колонка2
FROM таблица
WHERE условие;
Простая структура: мы добавляем слово WHERE после указания таблицы FROM и пишем конкретное условие, которому должны соответствовать строки.
В качестве примера рассмотрим извлечение данных из таблицы students:
SELECT name, age
FROM students
WHERE age > 18;
Этот запрос выбирает только тех студентов (имена и возраст), которым больше 18 лет. Всё просто, да? Теперь погрузимся в мир операторов сравнения.
Основные операторы сравнения
В SQL есть несколько операторов сравнения, которые помогут вам отфильтровать данные так, как вам нужно. В принципе вы их знаете из математики, но нужно немного уточнить, что да как. Вот список самых часто используемых:
=— Равно.<>— Не равно (альтернатива:!=в некоторых СУБД, но лучше использовать<>, так как это стандарт SQL).>— Больше.<— Меньше.>=— Больше или равно.<=— Меньше или равно.
Таблица операторов сравнения
| Оператор | Значение | Пример | Результат |
|---|---|---|---|
= |
Равно | age = 20 |
Возвращает строки, где возраст 20 |
<> |
Не равно | age <> 20 |
Возвращает строки, где возраст не равен 20 |
> |
Больше | age > 18 |
Возвращает строки, где возраст больше 18 |
< |
Меньше | age < 18 |
Возвращает строки, где возраст меньше 18 |
>= |
Больше или равно | age >= 18 |
Возвращает строки, где возраст 18 или больше |
<= |
Меньше или равно | age <= 18 |
Возвращает строки, где возраст 18 или меньше |
Примеры использования операторов сравнения
Пример 1: Извлечение студентов старше 20 лет
Вот наша таблица:
| id | name | age |
|---|---|---|
| 1 | Alex Lin | 22 |
| 2 | Anna Song | 19 |
| 3 | Otto Art | 21 |
SELECT name, age
FROM students
WHERE age > 20;
Здесь мы задаем условие age > 20, чтобы выбрать только тех студентов, возраст которых превышает 20. Если в таблице есть студент с возрастом 19, увы, он не попадет в результаты.
В нашем случае мы получим такой результат:
| name | age |
|---|---|
| Alex Lin | 22 |
| Otto Art | 21 |
Студентка Anna Song не попала в выборку, потому что ей только 19.
Пример 2: Извлечение сотрудников с зарплатой не менее 50 000
Вот наша таблица employees:
| first_name | last_name | salary |
|---|---|---|
| Julia | Kim | 48000 |
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
А вот наш SQL-запрос:
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;
Этот запрос вернет всех сотрудников, у которых зарплата равна 50 000 или превышает эту сумму. Равенство тоже подходит!
| first_name | last_name | salary |
|---|---|---|
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Пример 3: Извлечение товаров с ценой меньше 100
| product_name | price |
|---|---|
| USB Cable | 85 |
| Wireless Mouse | 150 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
SELECT product_name, price
FROM products
WHERE price < 100;
Если у вас электронный магазин, таким запросом вы можете выбрать все товары, которые стоят меньше 100 (например, для рекламной акции "Всё по 99!").
| product_name | price |
|---|---|
| USB Cable | 85 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
Пример 4: Исключение пользователей с определенным id
SELECT id, username
FROM users
WHERE id <> 1;
Этот запрос выбирает всех пользователей, кроме того, у кого id равен 1. Оператор <> говорит "дай мне всех, кто не равен этому значению".
Таблица users:
| id | username |
|---|---|
| 1 | admin |
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Результат выполнения запроса:
| id | username |
|---|---|
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Типичные ошибки при фильтрации с помощью операторов сравнения
Когда вы только начинаете писать запросы с фильтрацией, ошибки встречаются часто. Вот пара распространенных случаев, о которых стоит помнить:
Проблема 1: Ошибка в имени столбцов
Если вы неправильно напишете имя столбца в запросе, PostgreSQL выдаст ошибку. Например:
SELECT name, age
FROM students
WHERE ages > 18; -- Ошибка: столбца "ages" не существует
Обязательно проверяйте точные названия столбцов, прежде чем писать запрос.
Проблема 2: Неправильное использование оператора сравнения
Иногда новички могут случайно перепутать операторы. Например:
SELECT name, age
FROM students
WHERE age => 18; -- Ошибка: неверный оператор
Верный синтаксис — >=, а не =>.
Проблема 3: Фильтрация по значениям, которых нет
Если вы пытаетесь отфильтровать строки по значению, которого нет в таблице, запрос выполнится, но вернет пустой результат. Например:
SELECT name
FROM students
WHERE age = 999; -- Результат: 0 строк
Это не синтаксическая ошибка, но она может сбивать с толку, если вы ожидаете увидеть данные.
Практическое применение
Фильтрация данных с помощью операторов сравнения используется в самых разных сценариях:
- Анализ данных: например, чтобы выбрать всех клиентов, потративших больше 10 000 рупий.
- Отчеты: выбор сотрудников с зарплатой выше среднего.
- Мониторинг: отслеживание пользователей, которые не были активны в течение последнего месяца.
SQL позволяет вам быстро извлекать нужные данные из огромных таблиц, и операторы сравнения — это первый шаг на этом пути.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ