Ce que signifie vraiment NULL
Une valeur inconnue, ni zéro ni vide.
Ce que signifie vraiment NULL est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Découvrez NULL
NULL est la manière dont SQL indique « je ne sais pas ». Ce n'est ni zéro, ni une chaîne vide, ni false — cela représente l'absence de valeur.
Lorsqu'une colonne n'a aucune valeur connue, la base de données y stocke NULL. Comprendre le comportement de NULL est une étape essentielle pour écrire des requêtes correctes.
-- A customers table where some phone numbers are unknown
SELECT id, name, phone
FROM customers;
-- id | name | phone
-- ---+---------+------------
-- 1 | Alice | 555-0101
-- 2 | Bob | NULL <- phone unknown
-- 3 | Carol | NULLNULL n'est pas zéro
Une erreur courante consiste à traiter NULL comme le nombre 0. Ces deux notions sont complètement différentes.
0est une valeur connue : zéro.NULLsignifie que la valeur est manquante ou inconnue.
Si le solde d'un compte vaut 0, le client n'a pas d'argent. S'il vaut NULL, nous ne connaissons simplement pas encore le solde.
SELECT id, balance
FROM accounts;
-- id | balance
-- ---+--------
-- 1 | 0 <- known: empty wallet
-- 2 | NULL <- unknown: not recorded yetNULL n'est pas une chaîne vide
Pour les colonnes textuelles, NULL et la chaîne vide '' sont également différents.
''est une chaîne de longueur nulle : il s'agit d'une valeur connue et présente.NULLsignifie qu'aucune chaîne n'a été fournie.
Vous pouvez enregistrer volontairement une note vide ou laisser la note complètement absente. SQL fait la différence entre les deux.
SELECT id, note, length(note) AS note_len
FROM tickets;
-- id | note | note_len
-- ---+------+----------
-- 1 | '' | 0 <- empty but present
-- 2 | NULL | NULL <- absent; length is also unknownLa logique à trois valeurs
La logique ordinaire a deux résultats : true et false. SQL en ajoute un troisième : inconnu.
Toute comparaison impliquant NULL produit unknown, car il est impossible de comparer avec une valeur que l'on ne possède pas. C'est ce qu'on appelle la logique à trois valeurs.
-- Each comparison with NULL returns UNKNOWN, not true/false
SELECT
NULL = 5 AS eq, -- unknown
NULL <> 5 AS neq, -- unknown
NULL = NULL AS self_eq, -- unknown (!)
NULL > 0 AS gt; -- unknownNULL = NULL n'est pas vrai
La règle la plus surprenante est la suivante : NULL = NULL n'est pas true. L'expression donne le résultat unknown.
Pourquoi ? Si deux valeurs sont toutes les deux inconnues, vous ne pouvez pas affirmer qu'elles sont égales : elles pourraient être quelconques. Pour vérifier qu'une valeur est NULL, vous devez utiliser IS NULL plutôt que =.
-- Wrong: never returns rows, because NULL = NULL is unknown
SELECT * FROM customers WHERE phone = NULL;
-- Right: use IS NULL
SELECT * FROM customers WHERE phone IS NULL;WHERE ne conserve que les lignes TRUE
Une clause WHERE ne conserve une ligne que lorsque sa condition est vraie. Les lignes pour lesquelles la condition est false ou unknown sont supprimées.
C'est pourquoi filtrer une colonne NULL avec = supprime silencieusement des lignes que vous vous attendiez peut-être à voir.
-- Bob and Carol have NULL phones, so phone = '555-0101'
-- is UNKNOWN for them and they are excluded.
SELECT name
FROM customers
WHERE phone = '555-0101';
-- Returns only AliceNULL se propage dans les calculs
NULL est contagieux dans les expressions. Presque toute opération arithmétique ou textuelle impliquant NULL produit NULL.
Si l'une des valeurs d'entrée est inconnue, vous ne pouvez pas connaître le résultat non plus.
SELECT
10 + NULL AS sum, -- NULL
100 * NULL AS prod, -- NULL
NULL / 2 AS div, -- NULL
'Hi ' || NULL AS greet; -- NULL (string concat)D'où viennent les NULL
Les NULL apparaissent dans plusieurs situations courantes :
- Un
INSERTqui omet une colonne pouvant contenir NULL. - Une jointure externe sans ligne correspondante d'un côté.
- Une agrégation sur zéro ligne, par exemple
SUMd'un ensemble vide renvoieNULL.
Connaître leur origine vous aide à décider comment les gérer.
-- Omitting phone inserts NULL automatically
INSERT INTO customers (id, name) VALUES (4, 'Dan');
SELECT id, name, phone FROM customers WHERE id = 4;
-- 4 | Dan | NULLPrévenir les NULL : NOT NULL
Si une colonne doit toujours avoir une valeur, déclarez-la NOT NULL. La base de données rejette alors toute ligne qui tente de la laisser vide.
C'est une manière efficace de conserver des données propres et d'éviter les mauvaises surprises liées aux NULL par la suite.
CREATE TABLE users (
id integer PRIMARY KEY,
email text NOT NULL, -- must always be provided
bio text -- nullable: optional
);
-- This fails: email cannot be NULL
INSERT INTO users (id, bio) VALUES (1, 'hi');NULL et DISTINCT / GROUP BY
Il existe un cas où SQL traite les NULL comme des valeurs égales : le regroupement et la suppression des doublons.
Avec DISTINCT et GROUP BY, toutes les valeurs NULL sont réunies dans un groupe unique, même si NULL = NULL donne le résultat inconnu ailleurs. Ce cas particulier permet de conserver un regroupement utile.
SELECT phone, count(*)
FROM customers
GROUP BY phone;
-- phone | count
-- ---------+------
-- 555-0101 | 1
-- NULL | 2 <- all NULLs grouped togetherRécapitulatif du modèle mental
Gardez ces règles à l'esprit chaque fois que vous voyez un NULL :
- NULL signifie inconnu, pas zéro ni vide.
- Les comparaisons avec NULL donnent inconnu : utilisez
IS NULL/IS NOT NULL. WHEREne conserve que les lignes vraies.- Les calculs avec NULL produisent NULL.
- Le regroupement traite les NULL comme un seul groupe.
-- The two correct NULL tests
SELECT name FROM customers WHERE phone IS NULL;
SELECT name FROM customers WHERE phone IS NOT NULL;Vérification rapide
Quel résultat l'expression NULL = NULL produit-elle en SQL standard ?
Récapitulatif
Vous comprenez maintenant ce qu'est réellement NULL : un marqueur indiquant une valeur manquante ou inconnue, distincte de 0 et de ''.
Vous avez découvert la logique à trois valeurs de SQL, pourquoi = NULL ne fonctionne jamais, comment NULL se propage dans les calculs et comment WHERE élimine les lignes inconnues. Ensuite, vous apprendrez à tester correctement les NULL avec IS NULL et IS NOT NULL.
-- Remember the golden rule
SELECT * FROM customers WHERE phone IS NULL; -- correct
-- SELECT * FROM customers WHERE phone = NULL; -- always empty!Questions Fréquemment Posées
La leçon « Ce que signifie vraiment NULL » est-elle gratuite ?
Oui — le texte complet de « Ce que signifie vraiment NULL » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Ce que signifie vraiment NULL » ?
Une valeur inconnue, ni zéro ni vide. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Ce que signifie vraiment NULL » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Ce que signifie vraiment NULL
- IS NULL et IS NOT NULL
- COALESCE et NULLIF
- Les valeurs NULL dans les agrégations et les jointures