0Pricing
SQL Academy · Leçon

NULL : la troisième valeur de vérité

Maîtrisez la signification de NULL, comprenez pourquoi NULL n’est égal à rien (pas même à lui-même) et découvrez comment la logique à trois valeurs affecte les clauses WHERE.

NULL : la troisième valeur de vérité est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Qu'est-ce que NULL ?

NULL représente des données inconnues ou manquantes. Ce n'est ni zéro, ni une chaîne vide, ni false. C'est l'absence explicite d'une valeur.

NULL n'est égal à rien (pas même à lui-même)

Voici la règle qui déroute tout le monde :

SELECT NULL = NULL;       -- NULL (not true!)
SELECT NULL = 0;          -- NULL
SELECT NULL = '';        -- NULL
SELECT NULL <> 1;         -- NULL

Utiliser IS NULL et IS NOT NULL

Pour vérifier la présence de NULL, vous devez utiliser les prédicats spéciaux IS NULL et IS NOT NULL :

SELECT email FROM users WHERE deleted_at IS NULL;       -- active users
SELECT email FROM users WHERE deleted_at IS NOT NULL;   -- deleted users

Logique à trois valeurs

La logique booléenne de SQL comporte trois valeurs : TRUE, FALSE et UNKNOWN (NULL).

ABA AND BA OR B
TRUENULLNULLTRUE
FALSENULLFALSENULL
NULLNULLNULLNULL

WHERE élimine les lignes dont le prédicat vaut NULL

Si WHERE x = 5 donne NULL pour une ligne (parce que x vaut NULL), cette ligne n'est PAS renvoyée. Seules les lignes dont le prédicat vaut TRUE sont conservées.

-- Suppose age is NULL for some users:
SELECT * FROM users WHERE age >= 18;
-- Users with NULL age are NOT returned, even though we
-- don't actually know they're under 18.

Le piège de NULL avec NOT IN

Cette requête ne renvoie AUCUNE ligne si un nom de la sous-requête vaut NULL :

SELECT * FROM users
WHERE name NOT IN (SELECT excluded_name FROM blocklist);
-- If blocklist has a NULL row, the whole NOT IN evaluates to NULL
-- → no rows returned

-- Safer:
SELECT * FROM users u
WHERE NOT EXISTS (
  SELECT 1 FROM blocklist b WHERE b.excluded_name = u.name
);

COALESCE : remplacer NULL par une valeur par défaut

COALESCE renvoie le premier argument qui n'est pas NULL :

SELECT id, COALESCE(full_name, email, 'Anonymous') AS display_name
FROM users;

-- If full_name is NULL, use email; if that's NULL too, use 'Anonymous'.

NULLIF : l'opposé

NULLIF(a, b) renvoie NULL lorsque a = b, et sinon a. Pratique pour traiter des valeurs sentinelles telles que '' ou 0 comme NULL.

SELECT NULLIF(price, 0) FROM products;
-- Returns NULL when price is 0, useful for AVG() that should ignore zeros.

NULL dans les fonctions d'agrégation

Les fonctions d'agrégation (à l'exception de COUNT(*)) ignorent les entrées NULL :

-- Suppose:  prices = [10, 20, NULL, 30]
SELECT COUNT(*)     FROM products;  -- 4 (counts rows)
SELECT COUNT(price) FROM products;  -- 3 (counts non-NULL prices)
SELECT AVG(price)   FROM products;  -- 20  (60 / 3, not 60 / 4)
SELECT SUM(price)   FROM products;  -- 60

Tri de NULL

Par défaut, PostgreSQL place les valeurs NULL en dernier lors d'un tri croissant et en premier lors d'un tri décroissant. Vous pouvez modifier ce comportement :

SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;

Stocker NULL ou une chaîne vide

Décidez pour chaque colonne si '' est une valeur valide. Si ce n'est pas le cas, utilisez NULL pour signifier « aucune valeur ». Dans le cas contraire, NULL signifie autre chose (par exemple « pas encore demandé »).

Soyez cohérent : ne mélangez pas les deux dans une même colonne.

Récapitulatif

NULL est une valeur de vérité à part entière.

  • Vérifiez avec IS NULL, jamais avec = NULL
  • Les filtres WHERE ne conservent que les lignes TRUE
  • Les fonctions d'agrégation ignorent les entrées NULL
  • COALESCE est votre allié

Vérification rapide

Que renvoie SELECT NULL = NULL; ?

Questions Fréquemment Posées

La leçon « NULL : la troisième valeur de vérité » est-elle gratuite ?

Oui — le texte complet de « NULL : la troisième valeur de vérité » 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 « NULL : la troisième valeur de vérité » ?

Maîtrisez la signification de NULL, comprenez pourquoi NULL n’est égal à rien (pas même à lui-même) et découvrez comment la logique à trois valeurs affecte les clauses WHERE. 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 3 sur 4.

Combien de temps prend la leçon « NULL : la troisième valeur de vérité » ?

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. Qu’est-ce qu’un RDBMS et pourquoi les tables sont importantes
  2. Clés primaires et unicité
  3. NULL : la troisième valeur de vérité
  4. Vue d’ensemble des types de données : INT VARCHAR DATE BOOLEAN
← Retour à SQL Academy