In SQL Null è sia un valore che una parola chiave. Diamo prima un'occhiata al valore NULL -
Null come valore
In termini semplici, NULL è semplicemente un segnaposto per dati che non esistono. Quando si eseguono operazioni di inserimento su tabelle, ci saranno momenti in cui alcuni valori di campo non saranno disponibili.
Per soddisfare i requisiti dei veri sistemi di gestione di database relazionali, MySQL utilizza NULL come segnaposto per i valori che non sono stati inviati. Lo screenshot seguente mostra l'aspetto dei valori NULL nel database.
Diamo ora un'occhiata ad alcune delle basi per NULL prima di addentrarci nella discussione.
- NULL non è un tipo di dati - questo significa che non è riconosciuto come "int", "date" o qualsiasi altro tipo di dati definito.
- Le operazioni aritmetiche che coinvolgono NULL restituiscono sempre NULL, ad esempio 69 + NULL = NULL.
- Tutte le funzioni aggregate influiscono solo sulle righe che non hanno valori NULL .
Dimostriamo ora come la funzione count tratta i valori nulli. Vediamo il contenuto corrente della tabella dei membri-
SELECT * FROM `members`;
L'esecuzione dello script precedente ci dà i seguenti risultati
membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Contiamo tutti i membri che hanno aggiornato il proprio contact_number
SELECT COUNT(contact_number) FROM `members`;
L'esecuzione della query precedente ci dà i seguenti risultati.
COUNT(contact_number) |
---|
7 |
Nota: i valori NULL non sono stati inclusi
Cosa non è?
L'operatore logico NOT viene utilizzato per verificare le condizioni booleane e restituisce true se la condizione è falsa. L'operatore NOT restituisce false se la condizione testata è vera
Condizione |
NON Risultato operatore |
Vero |
Falso |
Falso |
Vero |
Perché usare NOT null?
Ci saranno casi in cui dovremo eseguire calcoli su un set di risultati di query e restituire i valori. L'esecuzione di qualsiasi operazione aritmetica su colonne che hanno il valore NULL restituisce risultati null. Al fine di evitare che tali situazioni si verifichino, possiamo impiegare l'uso della clausola NOT NULL per limitare i risultati su cui operano i nostri dati.
Valori NOT NULL
Supponiamo di voler creare una tabella con determinati campi che dovrebbero sempre essere forniti con valori quando si inseriscono nuove righe in una tabella. Possiamo usare la clausola NOT NULL su un dato campo durante la creazione della tabella.
L'esempio mostrato di seguito crea una nuova tabella che contiene i dati del dipendente. Il numero del dipendente deve essere sempre fornito
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Proviamo ora a inserire un nuovo record senza specificare il nome del dipendente e vediamo cosa succede.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
L'esecuzione dello script precedente in MySQL workbench restituisce il seguente errore:
Parole chiave NULL
NULL può essere utilizzato anche come parola chiave quando si eseguono operazioni booleane su valori che includono NULL. La parola chiave "IS / NOT" viene utilizzata insieme alla parola NULL per tali scopi. La sintassi di base quando null viene utilizzato come parola chiave è la seguente
`comlumn_name' IS NULL`comlumn_name' NOT NULL
QUI
- "IS NULL" è la parola chiave che esegue il confronto booleano. Restituisce true se il valore fornito è NULL e false se il valore fornito non è NULL.
- "NOT NULL" è la parola chiave che esegue il confronto booleano. Restituisce true se il valore fornito non è NULL e false se il valore fornito è null.
Vediamo ora un esempio pratico che utilizza la parola chiave NOT NULL per eliminare tutti i valori di colonna che hanno valori null.
Continuando con l'esempio precedente, supponiamo di aver bisogno dei dettagli dei membri il cui numero di contatto non è nullo. Possiamo eseguire una query come
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
L'esecuzione della query precedente fornisce solo i record in cui il numero di contatto non è nullo.
Supponiamo di volere i record dei membri in cui il numero di contatto è nullo. Possiamo usare la seguente query
SELECT * FROM `members` WHERE contact_number IS NULL;
L'esecuzione della query precedente fornisce i dettagli del membro il cui numero di contatto è NULL
membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Confronto di valori nulli s
Logica a tre valori : l'esecuzione di operazioni booleane su condizioni che coinvolgono NULL può restituire "Unknown", "True" o "False".
Ad esempio, l' utilizzo della parola chiave "IS NULL" quando si eseguono operazioni di confronto che coinvolgono NULL può restituire true o false . L'utilizzo di altri operatori di confronto restituisce "Unknown" (NULL).
Supponi di confrontare il numero cinque con 5
SELECT 5 =5;
Il risultato della query è 1 che significa VERO
5 =5 |
---|
1 |
Facciamo la stessa operazione con NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Diamo un'occhiata a un altro esempio
SELECT 5 > 5;
5> 5 |
---|
0 |
Il risultato della query è 0 che significa FALSO
Diamo un'occhiata allo stesso esempio usando NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Utilizziamo la parola chiave IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Il risultato della query è 0 che è FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Il risultato della query è 1 che è TRUE
Sommario
- NULL è un segnaposto di valore per i campi della tabella facoltativi.
- MySQL tratta il valore NULL in modo diverso dagli altri tipi di dati. I valori NULL quando vengono utilizzati in una condizione restituiscono il valore booleano falso.
- L'operazione logica NOT viene utilizzata per verificare i valori booleani e restituisce true se il valore booleano è falso e falso se il valore booleano è vero.
- La clausola NOT NULL viene utilizzata per eliminare i valori NULL da un set di risultati
- L'esecuzione di operazioni aritmetiche sui valori NULL restituisce sempre risultati NULL.
- Gli operatori di confronto come [, =, ecc.] Non possono essere utilizzati per confrontare i valori NULL.