Ти вже познайомився з типами даних, які зберігають числа й текст. Тепер час поговорити про логічний тип даних — BOOLEAN. Це, мабуть, найчесніший тип даних, бо він відповідає лише на два питання: "Так" або "Ні". А іноді — "Мабуть" (читай: NULL).
Логічний тип даних BOOLEAN зберігає значення, які можуть бути тільки:
TRUE(істина);FALSE(брехня);NULL(відсутність значення).
Уяви собі вимикач: він може бути увімкнений TRUE, вимкнений FALSE або в стані невідомості NULL, якщо лампочка раптом зникла.
Можна сказати, що логічний тип даних — це основа прийняття рішень і умовної логіки в SQL. Без нього неможливо було б зробити нормальний фільтр у запиті чи позначити статус чогось.
Приклади використання
Логічний тип даних широко юзається в базах даних. Ось кілька реальних кейсів:
Флаги та статуси.
Наприклад, поле is_active може показувати, активний користувач (TRUE) чи ні (FALSE).
SELECT username, is_active
FROM users
WHERE is_active = TRUE;
Контроль виконання.
Наприклад, поле is_complete може зберігати інфу, чи завершене завдання.
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Перевірка доступності.
Поле is_available може відображати, чи доступний товар на складі.
Як використовувати BOOLEAN у PostgreSQL?
Логічний тип даних у PostgreSQL називається просто BOOLEAN. давай створимо таблицю й додамо в неї кілька колонок:
- Унікальний ідентифікатор завдання
- Назва завдання
- Логічний статус завершення завдання
Потім давай додамо кілька записів у таблицю:
| task_id | task_name - VARCHAR(255) | is_complete - BOOLEAN |
|---|---|---|
| 1 | Написати звіт | false |
| 2 | Сходити в магазин | true |
| 3 | Прочитати книгу | null |
Витяг даних
Тепер подивимось, як витягати дані на основі логічного значення. Наприклад, щоб отримати лише невиконані завдання, напишемо:
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Цей запит поверне лише ті завдання, де is_complete дорівнює FALSE.
Результат:
| task_name |
|---|
| Написати звіт |
Особливості роботи з BOOLEAN
Фільтрація значень
Для роботи з логічним типом ти можеш використовувати такий синтаксис:
= TRUE— якщо хочеш явно вказати, що значення істинне.= FALSE— якщо хочеш вибрати хибні значення.IS NULL— якщо хочеш вибрати записи без значення.
Приклад:
SELECT task_name
FROM tasks
WHERE is_complete IS NULL;
Спрощення умов
PostgreSQL настільки "розумний", що часто тобі навіть не треба явно писати = TRUE. Наприклад:
SELECT task_name
FROM tasks
WHERE is_complete;
Цей запит еквівалентний WHERE is_complete = TRUE.
Типові помилки при роботі з BOOLEAN
Коли починаєш працювати з новим типом даних, помилок не уникнути. Ось кілька типових проблем, які можуть виникнути:
Порівняння з NULL. Новачки часто пишуть is_active = NULL. Але NULL не можна порівнювати з =. Щоб перевірити, чи значення NULL, юзай IS NULL або IS NOT NULL.
Явне вказування = TRUE. Іноді програмісти додають зайві конструкції, типу WHERE is_active = TRUE. Це не помилка, але запис можна спростити, залишивши просто WHERE is_active.
Неправильне використання рядків. Логічний тип строго типізований. Ти не можеш написати is_active = 'TRUE' або is_active = 'FALSE'. Використовуй напряму значення TRUE, FALSE або NULL.
Навіщо це потрібно?
Можливо, ти задаєшся питанням: ну навіщо так ускладнювати життя, додаючи цей BOOLEAN? Чому б просто не юзати числа, де 1 — істина, а 0 — брехня?
Відповідь проста: BOOLEAN робить твій код і дані більш виразними. Коли хтось дивиться на таблицю з полем is_active, одразу зрозуміло, що це поле зберігає логічну сутність (так/ні). Це покращує читабельність схеми бази даних і робить твою модель даних зрозумілішою для інших розробників.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ