MySQL EST NULL ET EST PAS NULL Tutoriel avec EXEMPLES
Dans SQL, Null est ร la fois une valeur et un mot-clรฉ. Examinons d'abord la valeur NULL -
Nul 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 quelques 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 ยป, une ยซ date ยป ou tout autre type de donnรฉes dรฉfini.
- Opรฉrations arithmรฉtiques impliquant NULL toujours retourner NULL par exemple, 69 + NULL = NULL.
- Tous fonctions d'agrรฉgation n'affecte que les lignes qui n'ont pas de valeurs NULL.
Montrons maintenant comment la fonction count 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 | 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 |
Comptons tous les membres qui ont mis ร jour leur numรฉro de contact
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 | pas Operarรฉ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 d'opรฉrations arithmรฉtiques sur des colonnes ayant la valeur NULL renvoie des rรฉsultats nuls. 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 fonctionnent.
Valeurs NON NULLes
Supposons que nous souhaitions crรฉer une table avec certains champs qui doivent toujours recevoir des valeurs lors de l'insertion de nouvelles lignes dans une table. On peut 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 de l'employรฉ. 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 prรฉciser le nom de l'employรฉ et voyons ce qui se passe.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Exรฉcuter le script ci-dessus dans MySQL l'รฉtabli 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 incluant NULL. Le mot-clรฉ ยซ IS/NOT ยป est utilisรฉ conjointement 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. (en anglais seulement)
- ยซ EST NULL est le mot-clรฉ qui effectue la comparaison boolรฉenne. Il renvoie vrai si la valeur fournie est NULL et false si la valeur fournie n'est pas NULL.
- ยซ NON NULL ยปest le mot-clรฉ qui effectue la comparaison boolรฉenne. Il renvoie vrai si la valeur fournie n'est pas NULL et faux si la valeur fournie est nulle.
Examinons maintenant un exemple pratique qui utilise le mot-clรฉ NOT NULL pour รฉliminer toutes les valeurs de colonne ayant des valeurs nulles.
En continuant avec l'exemple ci-dessus, supposons que nous ayons besoin de dรฉtails sur les 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 pour lesquels le numรฉro de contact n'est pas nul.
Supposons que nous voulions des enregistrements de membres dont 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 | 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 |
Comparaison de valeurs nulles
Logique ร trois valeurs โ effectuer des opรฉrations boolรฉennes sur des conditions impliquant NULL peut renvoyer ยซ Inconnu ยป, ยซ Vrai ยป ou ยซ Faux ยป.
Par exemple, en utilisant le mot-clรฉ ยซ IS NULL ยป lors d'opรฉrations de comparaison impliquant NULL peut soit revenir oui or non. L'utilisation d'autres opรฉrateurs de comparaison renvoie ยซ Inconnu ยป (NULL).
Supposons que vous compariez le numรฉro cinq avec 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 FAUX
Regardons le mรชme exemple en utilisant NULL
SELECT NULL > NULL;
| NULL > NULL |
|---|
| NULL |
Utilisons 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 FAUX
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รฉ ร la 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, donnent la fausse valeur boolรฉenne.
- L'opรฉration logique NOT est utilisรฉe pour tester les valeurs boolรฉennes et est รฉvaluรฉe comme vraie si la valeur boolรฉenne est fausse et fausse 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.


