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; -- NULLUtiliser 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 usersLogique à trois valeurs
La logique booléenne de SQL comporte trois valeurs : TRUE, FALSE et UNKNOWN (NULL).
| A | B | A AND B | A OR B |
|---|---|---|---|
| TRUE | NULL | NULL | TRUE |
| FALSE | NULL | FALSE | NULL |
| NULL | NULL | NULL | NULL |
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; -- 60Tri 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
COALESCEest 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
- Qu’est-ce qu’un RDBMS et pourquoi les tables sont importantes
- Clés primaires et unicité
- NULL : la troisième valeur de vérité
- Vue d’ensemble des types de données : INT VARCHAR DATE BOOLEAN