CodeGym /Corsi /SQL SELF /Tipo di dato logico: BOOLEAN

Tipo di dato logico: BOOLEAN

SQL SELF
Livello 15 , Lezione 3
Disponibile

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.

2
Compito
SQL SELF, livello 15, lezione 3
Bloccato
Interpretazione testuale di un valore booleano
Interpretazione testuale di un valore booleano
2
Compito
SQL SELF, livello 15, lezione 3
Bloccato
Filtraggio per valore booleano
Filtraggio per valore booleano
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION