MySQL È NULL E NON È NULL Tutorial con ESEMPI
In SQL Null è sia un valore che una parola chiave. Esaminiamo prima il valore NULL:
Nullo come valore
In termini semplici, NULL è semplicemente un segnaposto per dati che non esistono. Quando si eseguono operazioni di inserimento sulle 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 come appaiono i valori NULL nel database.
Diamo ora un'occhiata ad alcune nozioni di base su NULL prima di approfondire la discussione.
- NULL non è un tipo di dati – ciò significa che non è riconosciuto come “int”, “date” o qualsiasi altro tipo di dati definito.
- Operazioni aritmetiche coinvolgendo NULL sempre restituisce NULL ad esempio, 69 + NULL = NULL.
- Tutto funzioni aggregate influenza solo le righe che non hanno valori NULL.
Dimostriamo ora come la funzione count tratta i valori null. Vediamo il contenuto attuale della tabella dei membri-
SELECT * FROM `members`;
L'esecuzione dello script soprastante ci fornisce 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 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 loro contact_number
SELECT COUNT(contact_number) FROM `members`;
L'esecuzione della query di cui sopra fornisce 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 vero se la condizione è falsa. L'operatore NOT restituisce false se la condizione testata è vera
Condizione | NON Operarisultato |
---|---|
I veri | Falso |
Falso | I veri |
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 con valore NULL restituisce risultati nulli. Per evitare che tali situazioni si verifichino, possiamo utilizzare la clausola NOT NULL per limitare i risultati su cui operano i nostri dati.
Valori NON NULL
Supponiamo di voler creare una tabella con determinati campi a cui dovrebbero essere sempre forniti dei valori quando si inseriscono nuove righe in una tabella. Possiamo utilizzare 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');
Eseguendo lo 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 viene utilizzato null come parola chiave è la seguente
`comlumn_name' IS NULL `comlumn_name' NOT NULL
QUI
- "È ZERO è la parola chiave che esegue il confronto booleano. Restituisce true se il valore fornito è NULL e false se il valore fornito non è NULL.
- "NON NULLO"è 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 record di 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 di cui sopra 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 | janetjones@yagoo.cm |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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
Logica a tre valori – l'esecuzione di operazioni booleane su condizioni che coinvolgono NULL può restituire “Sconosciuto”, “Vero” o “Falso”.
Per esempio, utilizzando la parola chiave "IS NULL". quando si eseguono operazioni di confronto che coinvolgono NULL può tornare vero or falso. L'utilizzo di altri operatori di confronto restituisce “Sconosciuto”(NULL).
Supponiamo 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 |
Usiamo la parola chiave IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Il risultato della query è 0 che è FALSO
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Il risultato della query è 1 che è VERO
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 utilizzati in una condizione restituiscono il falso valore booleano.
- L'operazione logica NOT viene utilizzata per verificare i valori booleani e restituisce vero 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 su valori NULL restituisce sempre risultati NULL.
- Gli operatori di confronto come [, =, ecc.] non possono essere utilizzati per confrontare valori NULL.