Dans SQL Null est à la fois une valeur et un mot-clé. Regardons d'abord la valeur NULL -
Null comme valeur
En termes simples, NULL est simplement un espace réservé pour des données qui n'existent pas. Lors de l'exécution d'opérations d'insertion sur des tables, il y aura des moments où certaines valeurs de champ ne seront pas disponibles.
Afin de répondre aux exigences des véritables systèmes de gestion de bases de données relationnelles, MySQL utilise NULL comme espace réservé pour les valeurs qui n'ont pas été soumises. La capture d'écran ci-dessous montre à quoi ressemblent les valeurs NULL dans la base de données.
Examinons maintenant certaines des bases de NULL avant d'aller plus loin dans la discussion.
- NULL n'est pas un type de données - cela signifie qu'il n'est pas reconnu comme un "int", "date" ou tout autre type de données défini.
- Les opérations arithmétiques impliquant NULL retournent toujours NULL, par exemple 69 + NULL = NULL.
- Toutes les fonctions d'agrégation affectent uniquement les lignes qui n'ont pas de valeurs NULL .
Voyons maintenant comment la fonction de comptage traite les valeurs nulles. Voyons le contenu actuel de la table des membres-
SELECT * FROM `members`;
L'exécution du script ci-dessus nous donne les résultats suivants
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 |
Comptons tous les membres qui ont mis à jour leur contact_number
SELECT COUNT(contact_number) FROM `members`;
L'exécution de la requête ci-dessus nous donne les résultats suivants.
COUNT(contact_number) |
---|
7 |
Remarque: les valeurs NULL n'ont pas été incluses
Ce qui n'est pas?
L'opérateur logique NOT est utilisé pour tester les conditions booléennes et renvoie vrai si la condition est fausse. L'opérateur NOT renvoie false si la condition testée est vraie
État |
NOT Opérateur Résultat |
Vrai |
Faux |
Faux |
Vrai |
Pourquoi utiliser NOT null?
Il y aura des cas où nous devrons effectuer des calculs sur un jeu de résultats de requête et renvoyer les valeurs. L'exécution de toute opération arithmétique sur les colonnes qui ont la valeur NULL renvoie des résultats NULL. Afin d'éviter que de telles situations ne se produisent, nous pouvons utiliser la clause NOT NULL pour limiter les résultats sur lesquels nos données opèrent.
Valeurs NOT NULL
Supposons que nous voulions créer une table avec certains champs qui devraient toujours être fournis avec des valeurs lors de l'insertion de nouvelles lignes dans une table. Nous pouvons utiliser la clause NOT NULL sur un champ donné lors de la création de la table.
L'exemple ci-dessous crée une nouvelle table contenant les données des employés. Le numéro d'employé doit toujours être fourni
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Essayons maintenant d'insérer un nouvel enregistrement sans spécifier le nom de l'employé et voyons ce qui se passe.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
L'exécution du script ci-dessus dans MySQL workbench donne l'erreur suivante -
Mots clés NULL
NULL peut également être utilisé comme mot clé lors de l'exécution d'opérations booléennes sur des valeurs qui incluent NULL. Le mot clé "IS / NOT" est utilisé en conjonction avec le mot NULL à ces fins. La syntaxe de base lorsque null est utilisé comme mot-clé est la suivante
`comlumn_name' IS NULL`comlumn_name' NOT NULL
ICI
- "IS NULL" est le mot clé qui effectue la comparaison booléenne. Il renvoie true si la valeur fournie est NULL et false si la valeur fournie n'est pas NULL.
- "NOT NULL" est le mot clé qui effectue la comparaison booléenne. Il renvoie true si la valeur fournie n'est pas NULL et false si la valeur fournie est null.
Examinons maintenant un exemple pratique qui utilise le mot clé NOT NULL pour éliminer toutes les valeurs de colonne qui ont des valeurs nulles.
En continuant avec l'exemple ci-dessus, supposons que nous ayons besoin des détails des membres dont le numéro de contact n'est pas nul. Nous pouvons exécuter une requête comme
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
L'exécution de la requête ci-dessus ne donne que les enregistrements où le numéro de contact n'est pas nul.
Supposons que nous voulions des enregistrements de membre où le numéro de contact est nul. Nous pouvons utiliser la requête suivante
SELECT * FROM `members` WHERE contact_number IS NULL;
L'exécution de la requête ci-dessus donne les détails du membre dont le numéro de contact est 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 |
Comparaison de la valeur nulle s
Logique à trois valeurs - l'exécution d'opérations booléennes sur des conditions qui impliquent NULL peut renvoyer "Unknown", "True" ou "False".
Par exemple, l' utilisation du mot clé "IS NULL" lors d'opérations de comparaison impliquant NULL peut renvoyer true ou false . L'utilisation d'autres opérateurs de comparaison renvoie "Inconnu" (NULL).
Supposons que vous compariez le numéro cinq à 5
SELECT 5 =5;
Le résultat de la requête est 1, ce qui signifie VRAI
5 =5 |
---|
1 |
Faisons la même opération avec NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Regardons un autre exemple
SELECT 5 > 5;
5> 5 |
---|
0 |
Le résultat de la requête est 0, ce qui signifie FALSE
Regardons le même exemple en utilisant NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Permet d'utiliser le mot clé IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Le résultat de la requête est 0, ce qui est FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Le résultat de la requête est 1, ce qui est VRAI
Résumé
- NULL est un espace réservé de valeur pour les champs de table facultatifs.
- MySQL traite la valeur NULL différemment des autres types de données. Les valeurs NULL lorsqu'elles sont utilisées dans une condition sont évaluées à la valeur booléenne fausse.
- L'opération logique NOT est utilisée pour tester les valeurs booléennes et prend la valeur true si la valeur booléenne est false et false si la valeur booléenne est vraie.
- La clause NOT NULL est utilisée pour éliminer les valeurs NULL d'un jeu de résultats
- L'exécution d'opérations arithmétiques sur des valeurs NULL renvoie toujours des résultats NULL.
- Les opérateurs de comparaison tels que [, =, etc.] ne peuvent pas être utilisés pour comparer des valeurs NULL.