Отже, ми вже знаємо, як можна використовувати команду 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 дозволяє швидко витягати потрібні дані з величезних таблиць, і оператори порівняння — це перший крок на цьому шляху.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ