Poznałeś już typy danych, które przechowują liczby i tekst. Teraz czas pogadać o typie logicznym — BOOLEAN. To chyba najbardziej "szczery" typ danych, bo odpowiada tylko na dwa pytania: "Tak" albo "Nie". A czasem — "Może" (czyli: NULL).
Typ logiczny BOOLEAN przechowuje wartości, które mogą być tylko:
TRUE(prawda);FALSE(fałsz);NULL(brak wartości).
Wyobraź sobie przełącznik: może być włączony TRUE, wyłączony FALSE albo w stanie nieznanym NULL, jeśli żarówka nagle zniknęła.
Można powiedzieć, że typ logiczny to podstawa podejmowania decyzji i logiki warunkowej w SQL. Bez niego nie dałoby się zrobić sensownego filtra w zapytaniu albo oznaczyć statusu czegokolwiek.
Przykłady użycia
Typ logiczny jest szeroko używany w bazach danych. Oto kilka realnych przypadków:
Flagi i statusy.
Na przykład pole is_active może pokazywać, czy użytkownik jest aktywny (TRUE) czy nie (FALSE).
SELECT username, is_active
FROM users
WHERE is_active = TRUE;
Kontrola wykonania.
Na przykład pole is_complete może przechowywać informację, czy zadanie zostało ukończone.
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Sprawdzanie dostępności.
Pole is_available może pokazywać, czy towar jest dostępny w magazynie.
Jak używać BOOLEAN w PostgreSQL?
Typ logiczny w PostgreSQL nazywa się po prostu BOOLEAN. Zróbmy tabelę i dodajmy do niej kilka kolumn:
- Unikalny identyfikator zadania
- Nazwa zadania
- Logiczny status ukończenia zadania
Potem dodajmy kilka rekordów do tabeli:
| task_id | task_name - VARCHAR(255) | is_complete - BOOLEAN |
|---|---|---|
| 1 | Napisać raport | false |
| 2 | Pójść do sklepu | true |
| 3 | Przeczytać książkę | null |
Pobieranie danych
Teraz zobaczmy, jak pobierać dane na podstawie wartości logicznej. Na przykład, żeby dostać tylko niewykonane zadania, napiszemy:
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
To zapytanie zwróci tylko te zadania, gdzie is_complete równa się FALSE.
Wynik:
| task_name |
|---|
| Napisać raport |
Specyfika pracy z BOOLEAN
Filtrowanie wartości
Do pracy z typem logicznym możesz użyć takiej składni:
= TRUE— jeśli chcesz jasno wskazać, że wartość jest prawdziwa.= FALSE— jeśli chcesz wybrać fałszywe wartości.IS NULL— jeśli chcesz wybrać rekordy bez wartości.
Przykład:
SELECT task_name
FROM tasks
WHERE is_complete IS NULL;
Uproszczenie warunków
PostgreSQL jest tak "sprytny", że często nawet nie musisz pisać = TRUE. Na przykład:
SELECT task_name
FROM tasks
WHERE is_complete;
To zapytanie jest równoważne WHERE is_complete = TRUE.
Typowe błędy przy pracy z BOOLEAN
Kiedy zaczynasz pracę z nowym typem danych, błędów nie da się uniknąć. Oto kilka typowych problemów, które mogą się pojawić:
Porównanie z NULL. Początkujący często piszą is_active = NULL. Ale NULL nie można porównywać przez =. Żeby sprawdzić, czy wartość to NULL, użyj IS NULL albo IS NOT NULL.
Jawne podanie = TRUE. Czasem programiści dodają zbędne konstrukcje, typu WHERE is_active = TRUE. To nie jest błąd, ale można to uprościć, zostawiając po prostu WHERE is_active.
Błędne użycie stringów. Typ logiczny jest ściśle typowany. Nie możesz napisać is_active = 'TRUE' albo is_active = 'FALSE'. Używaj bezpośrednio wartości TRUE, FALSE lub NULL.
Po co to wszystko?
Pewnie się zastanawiasz: po co sobie komplikować życie, dodając ten BOOLEAN? Czemu nie użyć po prostu liczb, gdzie 1 to prawda, a 0 to fałsz?
Odpowiedź jest prosta: BOOLEAN sprawia, że twój kod i dane są bardziej czytelne. Kiedy ktoś patrzy na tabelę z polem is_active, od razu wie, że to pole przechowuje logiczną wartość (tak/nie). To poprawia czytelność schematu bazy i sprawia, że twoja model danych jest bardziej zrozumiały dla innych programistów.
GO TO FULL VERSION