CodeGym /Cours /SQL SELF /Découverte de NULL. Différence entre NULL et 0

Découverte de NULL. Différence entre NULL et 0

SQL SELF
Niveau 9 , Leçon 0
Disponible

Il est temps de parler un peu plus en détail de NULL. Et ce n'est pas juste du blabla, même si notre héros a l'air de... rien du tout. Si une table était une maison, NULL serait son fantôme — silencieux, mystérieux et imprévisible. Il est là, mais il ne répond pas aux questions, il ne participe pas aux calculs, il évite les comparaisons. Ce n'est pas juste "vide" — c'est "on ne sait rien".

Dans le monde SQL, NULL — ce n'est pas zéro, ce n'est pas une chaîne vide et ce n'est pas "pas de données" au sens habituel. C'est un signe spécial d'inconnu, avec lequel il faut faire gaffe. Aujourd'hui, on va voir pourquoi NULL n'est pas juste un invité bizarre, mais un acteur clé de toute base de données. Parce qu'il veut littéralement dire "valeur inconnue ou non définie".

Quelle est la différence entre NULL, la chaîne vide ou le nombre 0 ?

Plein de débutants confondent NULL avec d'autres valeurs, comme la chaîne vide '' ou le nombre 0. Regardons les différences clés :

Concept Valeur
NULL Absence totale de valeur. Ce n'est pas juste une boîte vide, c'est l'absence de boîte
Chaîne vide C'est une chaîne qui n'a tout simplement aucun caractère. Par exemple : ''
Nombre 0 Une valeur qui représente un nombre précis, égal à zéro

Exemple dans la vraie vie : imagine que tu as une table d'employés et que tu stockes leurs salaires. Si le salaire est indiqué comme 0, ça veut dire que la personne n'a rien touché. Mais si le salaire est NULL, alors tu ne sais tout simplement pas combien il ou elle gagne (ou ce n'est pas encore défini).

Comment interpréter NULL

Maintenant qu'on sait un peu ce que c'est que NULL, voyons comment SQL le gère. Le plus important à retenir sur NULL tient en une phrase : NULL n'est égal à rien et n'est pas inégal à rien, même pas à lui-même.

SELECT NULL = NULL;  -- Résultat : FAUX

Surprise ! Pourquoi ? Parce que NULL — c'est l'inconnu. Si tu as deux valeurs inconnues, tu ne peux pas affirmer qu'elles sont égales, ni qu'elles ne le sont pas.

Regardons quelques exemples :

Exemples d'opérations avec NULL

SELECT NULL + 1;      -- Résultat : NULL
SELECT NULL * 100;    -- Résultat : NULL
SELECT NULL = 0;      -- Résultat : FAUX
SELECT NULL <> 0;     -- Résultat : FAUX

NULL dans une addition, une multiplication ou n'importe quel calcul retourne toujours NULL. Ici, NULL ne fonctionne pas du tout comme 0 en maths. C'est comme si tu jetais quelque chose dans le vide et que ce vide avalait tout.

Exemples pratiques

Imaginons une table students avec des infos sur les étudiants :

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

Exemple 1 : Influence de NULL dans les conditions

Si on essaie de trouver tous les étudiants sans date de naissance, en mettant la condition WHERE birth_date = NULL :

SELECT *
FROM students 
WHERE birth_date = NULL;

On n'aura aucun résultat, parce que NULL = NULL retourne FAUX. Pour tester si une valeur est NULL, il faut utiliser IS NULL :

SELECT * FROM students WHERE birth_date IS NULL;

Résultat :

id name birth_date grade
2 Bob NULL 90
4 Diana NULL NULL

Exemple 2 : Influence de NULL dans les calculs

id name birth_date grade
1 Alice 2000-01-01 85
2 Bob NULL 90
3 Charlie 1999-05-22 NULL
4 Diana NULL NULL

Si on essaie de calculer la moyenne des notes de tous les étudiants :

SELECT AVG(grade) FROM students;

Le résultat sera : 87.5. Pourquoi ? Parce que NULL est ignoré dans les fonctions d'agrégation comme AVG, SUM, MIN, MAX. Mais fais gaffe ! Si tu veux prendre en compte les lignes avec NULL, il faudra bidouiller un peu plus.

On verra plus en détail comment bosser avec NULL dans les prochaines leçons.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION