PostgreSQL - Valori NULL
Il PostgreSQL NULLè il termine usato per rappresentare un valore mancante. Un valore NULL in una tabella è un valore in un campo che sembra essere vuoto.
Un campo con un valore NULL è un campo senza valore. È molto importante comprendere che un valore NULL è diverso da un valore zero o da un campo che contiene spazi.
Sintassi
La sintassi di base dell'utilizzo di NULL durante la creazione di una tabella è il seguente:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
Qui, NOT NULLsignifica che la colonna dovrebbe sempre accettare un valore esplicito del tipo di dati specificato. Ci sono due colonne in cui non abbiamo usato NOT NULL. Quindi, questo significa che queste colonne potrebbero essere NULL.
Un campo con un valore NULL è uno che è stato lasciato vuoto durante la creazione del record.
Esempio
Il valore NULL può causare problemi durante la selezione dei dati, perché quando si confronta un valore sconosciuto con qualsiasi altro valore, il risultato è sempre sconosciuto e non è incluso nei risultati finali. Considera la seguente tabella, AZIENDA con i seguenti record:
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
Usiamo l'istruzione UPDATE per impostare alcuni valori nullable come NULL come segue:
testdb=# UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
Ora, la tabella AZIENDA dovrebbe avere i seguenti record:
id | name | age | address | salary
----+-------+-----+-------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | |
7 | James | 24 | |
(7 rows)
Successivamente, vediamo l'utilizzo di IS NOT NULL operatore per elencare tutti i record in cui SALARY non è NULL -
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NOT NULL;
L'istruzione PostgreSQL sopra indicata produrrà il seguente risultato:
id | name | age | address | salary
----+-------+-----+------------+--------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
(5 rows)
Quello che segue è l'uso di IS NULL operatore che elencherà tutti i record in cui SALARY è NULL -
testdb=# SELECT ID, NAME, AGE, ADDRESS, SALARY
FROM COMPANY
WHERE SALARY IS NULL;
L'istruzione PostgreSQL sopra indicata produrrà il seguente risultato:
id | name | age | address | salary
----+-------+-----+---------+--------
6 | Kim | 22 | |
7 | James | 24 | |
(2 rows)