CodeGym /Corsi /SQL SELF /Introduzione a NULL. Differenza tra NULL e 0

Introduzione a NULL. Differenza tra NULL e 0

SQL SELF
Livello 9 , Lezione 0
Disponibile

È arrivato il momento di parlare un po' più a fondo di NULL. E non è una chiacchierata vuota, anche se il nostro protagonista sembra... il nulla. Se una tabella fosse una casa, NULL sarebbe il suo fantasma: silenzioso, misterioso e imprevedibile. Sembra esserci, ma non risponde alle domande, non partecipa ai conteggi, evita i confronti. Non è semplicemente "vuoto" — è "non si sa niente".

Nel mondo SQL NULL non è zero, non è una stringa vuota e non è "nessun dato" nel senso classico. È un segno speciale di incertezza, con cui bisogna andare cauti. Oggi vediamo perché NULL non è solo un ospite strano, ma un partecipante fondamentale in ogni database. Infatti significa proprio "valore sconosciuto o non definito".

In cosa NULL è diverso da una stringa vuota o dal numero 0?

Tanti principianti confondono NULL con altri valori, tipo la stringa vuota '' o il numero 0. Vediamo le differenze chiave:

Concetto Valore
NULL Assenza totale di valore. Non è solo una scatola vuota, è proprio l'assenza della scatola
Stringa vuota È una stringa che semplicemente non ha caratteri. Per esempio: ''
Numero 0 Un valore che rappresenta il numero zero, proprio zero

Esempio dalla vita reale: immagina di avere una tabella dei dipendenti e di salvare i loro stipendi. Se lo stipendio è 0, vuol dire che a quella persona non è stato pagato nulla. Se invece lo stipendio è NULL, semplicemente non sai quanto prende (o non è ancora stato deciso).

Come interpretare NULL

Ora che abbiamo già un'idea di cosa sia NULL, vediamo come SQL ci lavora. La cosa più importante su NULL si può riassumere in una frase: NULL non è uguale a niente e non è diverso da niente, nemmeno da se stesso.

SELECT NULL = NULL;  -- Risultato: FALSO

Sorpresa! Perché succede? Perché NULL è incertezza. Se hai due valori sconosciuti, non puoi dire che sono uguali, ma nemmeno che sono diversi.

Vediamo qualche esempio:

Esempi di operazioni con NULL

SELECT NULL + 1;      -- Risultato: NULL
SELECT NULL * 100;    -- Risultato: NULL
SELECT NULL = 0;      -- Risultato: FALSO
SELECT NULL <> 0;     -- Risultato: FALSO

NULL in una somma, una moltiplicazione o qualsiasi altro calcolo restituisce sempre NULL. Qui NULL non si comporta come lo zero in matematica. È come buttare qualcosa nel vuoto e il vuoto si mangia tutto.

Esempi pratici

Immagina la tabella students con le info sugli studenti:

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

Esempio 1: Influenza di NULL nelle condizioni

Se proviamo a trovare tutti gli studenti senza data di nascita, mettendo la condizione WHERE birth_date = NULL:

SELECT *
FROM students 
WHERE birth_date = NULL;

Non otterremo nessun risultato, perché NULL = NULL restituisce FALSO. Per controllare se un valore è NULL bisogna usare IS NULL:

SELECT * FROM students WHERE birth_date IS NULL;

Risultato:

id name birth_date grade
2 Bob NULL 90
4 Diana NULL NULL

Esempio 2: Influenza di NULL nei calcoli

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

Se proviamo a calcolare la media dei voti di tutti gli studenti:

SELECT AVG(grade) FROM students;

Il risultato sarà: 87.5. Perché? Perché NULL viene ignorato nelle funzioni di aggregazione come AVG, SUM, MIN, MAX. Ma occhio! Se vuoi considerare anche le righe con NULL, dovrai fare qualche trucco in più.

Vedremo più in dettaglio come lavorare con NULL nelle prossime lezioni.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION