PostgreSQL - Valori NULL

Ciao, appassionati di database in erba! Oggi esploreremo un concetto affascinante in PostgreSQL: i valori NULL. Come il tuo insegnante di scienze informatiche del vicinato, sono entusiasta di guidarti attraverso questo argomento passo dopo passo. Non preoccuparti se sei nuovo alla programmazione - inizieremo dalle basi e poi ci muoveremo verso l'alto. Allora, prenditi una tazza di caffè (o tè, se è più il tuo şey), e partiamo insieme in questa avventura NULL!

PostgreSQL - NULL Values

Cos'è NULL?

Prima di immergerci nella sintassi ed esempi, cerchiamo di comprendere cosa significhi NULL nel contesto dei database.

Definizione di NULL

NULL è un valore speciale nei database che rappresenta l'assenza di dati. Non è zero, non è una stringa vuota e non è falso. È semplicemente... niente. Pensa a esso come a un segnaposto che dice: "Ehi, c'è qualcosa qui, ma non sappiamo cosa è ancora!"

Perché NULL è importante?

NULL è fondamentale nei database perché ci permette di distinguere tra:

  1. Un valore che conosciamo (come 0 o una stringa vuota)
  2. Un valore che non conosciamo o che non si applica

Ad esempio, se hai un database di dipendenti e i loro numeri di telefono, un NULL nel campo del numero di telefono potrebbe significare "Non abbiamo ancora il numero di telefono di questo dipendente", che è diverso da una stringa vuota che potrebbe significare "Questo dipendente ha dichiarato esplicitamente di non avere un telefono".

Sintassi per lavorare con i valori NULL

Ora che capiamo cosa sia NULL, esaminiamo come possiamo lavorare con esso in PostgreSQL. Ecco i principali modi per interagire con i valori NULL:

Operazione Sintassi Descrizione
Controllare se un valore è NULL IS NULL Restituisce vero se il valore è NULL
Controllare se un valore non è NULL IS NOT NULL Restituisce vero se il valore non è NULL
Impostare un valore predefinito per NULL COALESCE() Restituisce il primo valore non NULL nella lista
Nullif NULLIF(valore1, valore2) Restituisce NULL se valore1 è uguale a valore2, altrimenti restituisce valore1

Immergiamoci in ognuno di questi con alcuni esempi!

Esempi di lavoro con i valori NULL

Creazione di una tabella con valori NULL

Prima, creiamo una tabella semplice su cui lavorare:

CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100),
phone VARCHAR(20)
);

INSERT INTO students (name, email, phone) VALUES
('Alice', '[email protected]', '123-456-7890'),
('Bob', '[email protected]', NULL),
('Charlie', NULL, '987-654-3210'),
('David', NULL, NULL);

In questa tabella, abbiamo permesso ai campi email e phone di essere NULL. Analizziamo cosa abbiamo fatto:

  1. Alice ha tutte le sue informazioni.
  2. Bob non ha un numero di telefono (è NULL).
  3. Charlie non ha un'email (è NULL).
  4. David è misterioso e non ha né email né numero di telefono.

Controllare i valori NULL

Ora, vediamo come possiamo trovare studenti con informazioni mancanti:

SELECT name
FROM students
WHERE email IS NULL;

Questa query restituirà:

Charlie
David

Cosa sta succedendo qui? La condizione IS NULL controlla i valori NULL nella colonna email. È come chiedere: "Ehi PostgreSQL, puoi trovare tutti gli studenti che non ci hanno fornito il loro indirizzo email?"

Proviamo l'opposto:

SELECT name
FROM students
WHERE phone IS NOT NULL;

Questo ci darà:

Alice
Charlie

Questa volta, stiamo chiedendo agli studenti che hanno fornito i loro numeri di telefono.

Utilizzare COALESCE per gestire i valori NULL

COALESCE è come un coltello svizzero per gestire i valori NULL. Restituisce il primo valore non NULL in una lista. Vediamo come funziona:

SELECT name, COALESCE(email, 'No email provided') AS contact_info
FROM students;

Questa query restituirà:

Alice    | [email protected]
Bob      | [email protected]
Charlie  | No email provided
David    | No email provided

Cosa sta succedendo qui? COALESCE sta controllando la colonna email. Se trova un NULL, lo sostituisce con 'No email provided'. È come avere un assistente amichevole che riempie i vuoti per te!

Utilizzare NULLIF

NULLIF è un po' come un mago - può far scomparire i valori (trasformarli in NULL) sotto determinate condizioni. Vediamo un esempio:

SELECT name, NULLIF(phone, '123-456-7890') AS special_phone
FROM students;

Questa query restituirà:

Alice    | NULL
Bob      | NULL
Charlie  | 987-654-3210
David    | NULL

Cosa c'è di magico qui? NULLIF sta confrontando ogni numero di telefono con '123-456-7890'. Se corrispondono, trasforma il risultato in NULL. È come dire: "Se questo è il nostro numero di ufficio standard, non mostrarlo."

Conclusione

Eccoci, miei cari studenti! Abbiamo intrapreso un viaggio attraverso il regno dei valori NULL in PostgreSQL. Abbiamo visto come NULL rappresenti dati sconosciuti o mancanti, come verificarlo e come gestirlo con funzioni come COALESCE e NULLIF.

Ricorda, nel mondo dei database, sapere qualcosa su NULL è altrettanto importante come sapere qualcosa sui valori effettivi. È la differenza tra "Non lo so" e "So che è zero" - e nei dati, questa differenza può essere enorme!

Mentre continui la tua avventura con PostgreSQL, keeps your eyes peeled for these NULL values. They're like the silent characters in a story - not always visible, but often crucial to the plot.

Keep practicing, stay curious, and never be afraid to ask questions. After all, in the world of learning, there are no NULL values - only opportunities for growth!

Credits: Image by storyset