MySQL - Datatype Boolean: Una Guida per Principianti

Ciao a tutti, futuri maghi dei database! Oggi esploreremo il mondo affascinante del datatype Boolean di MySQL. Non preoccupatevi se non avete mai scritto una riga di codice prima – sarò il vostro guida amichevole in questo viaggio, proprio come ho fatto per innumerevoli studenti durante gli anni di insegnamento. Allora, prendete una tazza della vostra bevanda preferita e iniziamo!

MySQL - BOOLEAN

Cos'è un Datatype Boolean?

Prima di immergerci nei dettagli di MySQL, capiremo cos'è un Boolean. Immagina di giocare un semplice gioco di "sì" o "no" con un amico. Questo è essenzialmente ciò che un Boolean è nella programmazione – può avere solo due valori possibili: vero o falso.

Nelle applicazioni del mondo reale, i Boolean sono estremamente utili. Possono rappresentare:

  • Se un utente è logged in o no
  • Se un prodotto è in stock
  • Se uno studente ha passato un esame

Ora, vediamo come MySQL gestisce questo concetto.

Boolean in MySQL

Ecco dove le cose diventano un po' strane – MySQL non ha un datatype BOOLEAN nativo! Lo so, sembra confuso. Ma non preoccupatevi, MySQL ha un escamotage intelligente.

In MySQL, BOOLEAN è trattato come un sinonimo per TINYINT(1). Questo significa che quando crei una colonna BOOLEAN, MySQL segretamente crea una colonna TINYINT(1) al posto suo.

Vediamo questo in azione:

CREATE TABLE game_status (
id INT AUTO_INCREMENT PRIMARY KEY,
game_name VARCHAR(50),
is_completed BOOLEAN
);

INSERT INTO game_status (game_name, is_completed) VALUES
('Chess', TRUE),
('Monopoly', FALSE),
('Scrabble', TRUE);

SELECT * FROM game_status;

Quando esegui questa istruzione SELECT, potresti essere sorpreso di vedere:

+----+-----------+--------------+
| id | game_name | is_completed |
+----+-----------+--------------+
|  1 | Chess     |            1 |
|  2 | Monopoly  |            0 |
|  3 | Scrabble  |            1 |
+----+-----------+--------------+

Aspetta un momento! Dove sono i nostri valori TRUE e FALSE? Beh, ricorda cosa ho detto su BOOLEAN essere un TINYINT(1)? Ecco cosa sta succedendo:

  • TRUE è memorizzato come 1
  • FALSE è memorizzato come 0

È come se MySQL stesse giocando un segreto gioco di "1 significa sì, 0 significa no" dietro le quinte!

Sostituire BOOLEAN 0,1 con TRUE e FALSE

Ora, potresti pensare, "Ma voglio vedere TRUE e FALSE nei miei risultati!" Non preoccuparti, MySQL ha tutto sotto controllo. Possiamo usare una clausola CASE per convertire quei tristi 0 e 1 in TRUE e FALSE:

SELECT
id,
game_name,
CASE
WHEN is_completed = 1 THEN 'TRUE'
ELSE 'FALSE'
END AS is_completed
FROM game_status;

Questo ti darà un risultato più leggibile per gli esseri umani:

+----+-----------+--------------+
| id | game_name | is_completed |
+----+-----------+--------------+
|  1 | Chess     | TRUE         |
|  2 | Monopoly  | FALSE        |
|  3 | Scrabble  | TRUE         |
+----+-----------+--------------+

Molto meglio, vero? È come se abbiamo dato a MySQL un piccolo traduttore per parlare la nostra lingua!

Operatori Boolean Utilizzando un Programma Client

Ora che abbiamo capito come MySQL gestisce i Boolean, esaminiamo alcuni operatori Boolean. Questi sono come le regole del nostro gioco "sì/no", dicendo a MySQL come combinare o manipolare i valori Boolean.

Ecco i principali operatori Boolean in MySQL:

Operatore Descrizione
AND Vero se entrambi sono veri
OR Vero se uno è vero
NOT Inverte il valore Boolean
XOR Vero se esattamente uno è vero

Vediamo questi in azione con la nostra tabella game_status:

-- Operatore AND
SELECT * FROM game_status WHERE is_completed = TRUE AND game_name = 'Chess';

-- Operatore OR
SELECT * FROM game_status WHERE is_completed = TRUE OR game_name = 'Monopoly';

-- Operatore NOT
SELECT * FROM game_status WHERE NOT is_completed;

-- Operatore XOR
SELECT * FROM game_status WHERE is_completed XOR game_name = 'Monopoly';

Spieghiamo questi:

  1. La query AND restituirà solo le righe dove il gioco è completato E il nome del gioco è 'Chess'.
  2. La query OR restituirà le righe dove il gioco è completato O il nome del gioco è 'Monopoly'.
  3. La query NOT restituirà le righe dove il gioco non è completato (ricorda, questo significa is_completed = 0).
  4. La query XOR restituirà le righe dove o il gioco è completato o il nome del gioco è 'Monopoly', ma non entrambi.

Questi operatori sono come i mattoni di costruzione di query più complesse. Lasciano fare domande molto specifiche ai nostri dati, proprio come un detective che mette insieme indizi!

Conclusione

Eccoci, ragazzi! Abbiamo viaggiato attraverso il paese dei Boolean di MySQL, dalla loro strana implementazione come TINYINT(1) agli potenti operatori che ci aiutano a interrogare i nostri dati.

Ricorda, nel mondo dei database, tutto è un 1 o un 0, un VERO o un FALSO. È come se il database stesse giocando un grande gioco di "sì/no" con i nostri dati. E ora, hai gli strumenti per unirti a questo gioco!

Continuando la tua avventura con MySQL, scoprirai che questi concetti Booleani emergono ovunque. Sono la salsa segreta che ci aiuta a filtrare i dati, prendere decisioni nel nostro codice e, alla fine, costruire applicazioni potenti e dinamiche.

Quindi vai avanti, miei studenti, e possa sempre la tua query tornare VERA (tranne quando vuoi che torni FALSA, ovviamente)!

Credits: Image by storyset