Hai già visto tipi di dato che salvano numeri e testo. Ora è il momento di parlare del tipo di dato logico — BOOLEAN. Probabilmente è il tipo di dato più "onesto", perché risponde solo a due domande: "Sì" o "No". E a volte — "Forse" (leggi: NULL).
Il tipo di dato logico BOOLEAN salva valori che possono essere solo:
TRUE(vero);FALSE(falso);NULL(assenza di valore).
Pensa a un interruttore: può essere acceso TRUE, spento FALSE o in stato sconosciuto NULL, tipo quando la lampadina sparisce all'improvviso.
Si può dire che il tipo di dato logico è la base per prendere decisioni e per la logica condizionale in SQL. Senza di lui non potresti fare un filtro decente in una query o indicare lo stato di qualcosa.
Esempi di utilizzo
Il tipo di dato logico è usatissimo nei database. Ecco qualche caso reale:
Flag e stati.
Per esempio, il campo is_active può mostrare se l'utente è attivo (TRUE) oppure no (FALSE).
SELECT username, is_active
FROM users
WHERE is_active = TRUE;
Controllo completamento.
Per esempio, il campo is_complete può salvare info se un task è finito o no.
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Verifica disponibilità.
Il campo is_available può riflettere se un prodotto è disponibile in magazzino.
Come usare BOOLEAN in PostgreSQL?
Il tipo di dato logico in PostgreSQL si chiama semplicemente BOOLEAN. Dai, creiamo una tabella e aggiungiamo qualche colonna:
- Identificatore unico del task
- Nome del task
- Stato logico di completamento del task
Poi aggiungiamo qualche record nella tabella:
| task_id | task_name - VARCHAR(255) | is_complete - BOOLEAN |
|---|---|---|
| 1 | Scrivere il report | false |
| 2 | Andare al negozio | true |
| 3 | Leggere il libro | null |
Estrazione dei dati
Ora vediamo come estrarre dati in base al valore logico. Per esempio, per ottenere solo i task non completati, scriviamo:
SELECT task_name
FROM tasks
WHERE is_complete = FALSE;
Questa query restituisce solo i task dove is_complete è FALSE.
Risultato:
| task_name |
|---|
| Scrivere il report |
Caratteristiche di BOOLEAN
Filtraggio dei valori
Per lavorare con il tipo logico puoi usare questa sintassi:
= TRUE— se vuoi specificare che il valore è vero.= FALSE— se vuoi selezionare i valori falsi.IS NULL— se vuoi selezionare i record senza valore.
Esempio:
SELECT task_name
FROM tasks
WHERE is_complete IS NULL;
Condizioni semplificate
PostgreSQL è così "smart" che spesso non serve nemmeno scrivere = TRUE. Tipo:
SELECT task_name
FROM tasks
WHERE is_complete;
Questa query è uguale a WHERE is_complete = TRUE.
Errori tipici con BOOLEAN
Quando inizi a lavorare con un nuovo tipo di dato, gli errori sono dietro l'angolo. Ecco qualche problema tipico che può capitare:
Confronto con NULL. I principianti spesso scrivono is_active = NULL. Ma NULL non si può confrontare con =. Per controllare se un valore è NULL, usa IS NULL o IS NOT NULL.
Scrivere esplicitamente = TRUE. A volte i dev aggiungono costrutti inutili tipo WHERE is_active = TRUE. Non è un errore, ma puoi semplificare scrivendo solo WHERE is_active.
Uso sbagliato delle stringhe. Il tipo logico è fortemente tipizzato. Non puoi scrivere is_active = 'TRUE' o is_active = 'FALSE'. Usa direttamente i valori TRUE, FALSE o NULL.
Perché serve?
Magari ti chiedi: ma perché complicarsi la vita con questo BOOLEAN? Perché non usare solo numeri, dove 1 è vero e 0 è falso?
La risposta è semplice: BOOLEAN rende il tuo codice e i dati più chiari. Quando qualcuno guarda una tabella con il campo is_active, capisce subito che quel campo salva una cosa logica (sì/no). Questo migliora la leggibilità dello schema del database e rende il tuo modello dati più comprensibile per altri dev.
GO TO FULL VERSION