0Pricing
SQL Academy · Leçon

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   | NULL

NULL n'est pas zéro

Une erreur courante consiste à traiter NULL comme le nombre 0. Ces deux notions sont complètement différentes.

  • 0 est une valeur connue : zéro.
  • NULL signifie 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 yet

NULL 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.
  • NULL signifie 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 unknown

La 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;      -- unknown

NULL = 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 Alice

NULL 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 INSERT qui 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 SUM d'un ensemble vide renvoie NULL.

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 | NULL

Prévenir les NULL&nbsp;: 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 together

Ré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.
  • WHERE ne 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

  1. Ce que signifie vraiment NULL
  2. IS NULL et IS NOT NULL
  3. COALESCE et NULLIF
  4. Les valeurs NULL dans les agrégations et les jointures
← Retour à SQL Academy