DataTalk Expert - Data & IA governance, avec Charlotte Ledoux, experte Data Gouvernance - 10 juin à 19h30
DataTalk Expert - Data & IA governance, avec Charlotte Ledoux, experte Data Gouvernance - 10 juin à 19h30
DataTalk Expert - Data & IA governance, avec Charlotte Ledoux, experte Data Gouvernance - 10 juin à 19h30
Je m'inscris
Mardi 10 juin à 19h30
Participez à notre événement VIP

Dans cette conférence exclusive, Charlotte Ledoux et Alexandre Miny de Tornaco, co-fondateur de DataBird, vous invitent à décrypter :

  • Pourquoi gouverner Data et IA est essentiel aujourd’hui
  • Comment aligner métiers, techniques, juridiques et RH autour d’une gouvernance commune
  • Les nouveaux défis induits par l’IA générative sur les processus et la prise de décision
  • Des cas concrets illustrant les risques liés à une gouvernance insuffisante
  • L’importance de former et d’acculturer toutes les parties prenantes pour garantir un usage responsable

Je m'inscris

SQL : NULL, qu'est ce que c'est ?

Apprenez à gérer les valeurs NULL en SQL avec COALESCE, ISNULL, IS NULL/NOT NULL. Évitez les erreurs dans les jointures et agrégations.

Antoine Giannotta
Responsable Produit @DataBird
Mis à jour le
5/6/2025

Découvrez notre formation outil dédiée à SQL.

Découvrir

Déjà eu des résultats pourris à cause de champs NULL dans vos requêtes SQL ? 🧨

Le NULL, c’est ce truc qui veut dire "pas de valeur ici" mais qui complique TOUT en base de données !

Dans ce guide, on déchire le mythe : définition claire, astuces avec COALESCE/ISNULL, et comment éviter les valeurs manquantes qui tuent vos jointures ou agrégations.

Comprendre NULL en SQL : le concept d'absence

En SQL, NULL marque l’absence de valeur dans une colonne, pas une valeur réelle. Le langage SQL l’utilise pour dire "je n’ai pas d’info ici". C’est capital pour représenter une donnée inconnue, non renseignée ou simplement inapplicable dans le contexte. NULL, en résumé, c’est un blanc dans votre base de données qui veut dire quelque chose.

Quand vous voyez NULL, ne croyez pas qu’il s’agit d’un zéro ou d’une chaîne vide. NULL signifie "pas de donnée", alors qu’un zéro a une valeur précise, une chaîne vide existe mais reste vide. Par exemple, un champ numéro_rue NULL signifie "je sais pas", tandis qu’un zéro dit "il n’y a rien". Ces distinctions influencent vos requetes et leurs resultats, surtout en matière de comparaison ou de calculs.

Utilisation pratique de NULL dans vos requêtes SQL

Comment filtrer les données avec NULL

Pour repérer les données manquantes, utilisez IS NULL. À l'inverse, IS NOT NULL montre les données renseignées. WHERE vous permet de cibler ces valeurs absentes.

Comparaison SQL NULL
Fonctionnalité SQL MySQL SQL Server PostgreSQL
Filtrage avec IS NULL SELECT * FROM utilisateurs WHERE ville IS NULL; SELECT * FROM utilisateurs WHERE ville IS NULL; SELECT * FROM utilisateurs WHERE ville IS NULL;
Filtrage avec IS NOT NULL SELECT * FROM utilisateurs WHERE ville IS NOT NULL; SELECT * FROM utilisateurs WHERE ville IS NOT NULL; SELECT * FROM utilisateurs WHERE ville IS NOT NULL;
Remplacement avec COALESCE SELECT COALESCE(ville, 'Ville inconnue') FROM utilisateurs; SELECT COALESCE(ville, 'Ville inconnue') FROM utilisateurs; SELECT COALESCE(ville, 'Ville inconnue') FROM utilisateurs;
Remplacement avec ISNULL Non disponible SELECT ISNULL(ville, 'Ville inconnue') FROM utilisateurs; Non disponible
Tri par défaut des NULL NULL apparaît en premier en tri ascendant NULL apparaît en premier en tri ascendant NULL apparaît en dernier en tri ascendant
Contrôle du positionnement des NULL Non disponible Non disponible SELECT * FROM utilisateurs ORDER BY ville NULLS FIRST;

Imaginez un champ ville dans une table utilisateurs. Pour lister les profils sans ville renseignée, la requête devient SELECT * FROM utilisateurs WHERE ville IS NULL. À l'inverse, IS NOT NULL affiche uniquement les profils complets. Ces opérateurs changent tout dans vos résultats.

NULL et les opérations logiques en SQL

Le NULL perturbe la logique classique avec AND, OR et NOT. En SQL, une condition avec NULL renvoie UNKNOWN plutôt que TRUE ou FALSE.

  • NOT NULL = UNKNOWN : L’inversion d’une valeur inconnue reste inconnue
  • TRUE AND UNKNOWN = UNKNOWN : Une condition vraie combinée à une inconnue donne un résultat incertain
  • FALSE AND UNKNOWN = FALSE : Une condition fausse annule toujours le résultat même avec un UNKNOWN
  • TRUE OR UNKNOWN = TRUE : Une condition vraie masque les incertitudes
  • FALSE OR UNKNOWN = UNKNOWN : Une condition fausse associée à une inconnue maintient l’incertitude

Quand vous écrivez WHERE (ville IS NULL OR ville = 'Paris'), la logique tri-valente prend le relais. Si ville est NULL, l'expression ville = 'Paris' donne UNKNOWN mais OR suffit à valider la condition. En revanche, AND échoue si l'une des deux expressions est UNKNOWN.

{{formation-sql="/brouillon"}}

Gestion des valeurs NULL en SQL : astuces et bonnes pratiques

Les fonctions COALESCE et ISNULL pour remplacer NULL

COALESCE remplace les valeurs manquantes par une valeur par défaut. Standard SQL, elle renvoie la première non-NULL d'une liste. ISNULL, spécifique à SQL Server, fait pareil mais avec deux arguments max. COALESCE est plus flexible pour gérer les NULL dans les requêtes.

COALESCE suit le standard SQL, ISNULL est propre à SQL Server. COALESCE accepte plusieurs arguments, ISNULL seulement deux. Le type de retour varie : COALESCE prend la priorité des types, ISNULL celui du premier paramètre. Les colonnes créées avec COALESCE sont NULLables, pas celles avec ISNULL.

NULL et les jointures : pièges à éviter

Les NULL dans les colonnes de jointure excluent des lignes avec INNER JOIN. LEFT/RIGHT JOIN conservent les données d'une table, même avec NULL dans l'autre. Comprenez ces impacts pour éviter des résultats incomplets.

Un INNER JOIN ignore les lignes où les colonnes de jointure sont NULL. Un LEFT JOIN garde les lignes de la table de gauche, remplissant avec NULL si pas de match. Pour des jointures robustes, utilisez COALESCE ou des conditions IS NULL dans la clause ON. Le guide sur les jointures SQL explique comment gérer ces cas.

NULL et les fonctions d'agrégation

Les fonctions d'agrégation comme COUNT, SUM ou AVG ignorent les valeurs NULL. COUNT() compte toutes les lignes, y compris celles avec NULL. Comprenez ces comportements pour des statistiques fiables.

Dans un GROUP BY, les NULL se regroupent en une seule catégorie. Pour inclure les NULL dans les calculs, utilisez COALESCE pour les remplacer par 0. COUNT(colonne) ignore les NULL, COUNT() non. Ces nuances influencent vos analyses.

Le tri des résultats avec NULL : NULLS FIRST et NULLS LAST

NULLS FIRST/LAST positionne les valeurs NULL en début ou fin avec ORDER BY. MySQL et SQL Server les placent en premier en tri ascendant, PostgreSQL en dernier. Maîtrisez ces options pour contrôler le tri.

Pour trier des données utilisateurs avec champ NULL, MySQL/SQL Server montrent les NULL en premier en ASC, PostgreSQL en dernier. PostgreSQL/Oracle acceptent NULLS FIRST/LAST. Exemple : ORDER BY ville NULLS LAST force les NULL à la fin. Adaptez votre syntaxe selon le SGBD.

NULL dans la conception de base de données

NULL vs NOT NULL : quand les utiliser?

Les colonnes NULL acceptent les données manquantes, les colonnes NOT NULL imposent une valeur obligatoire. La création de tables SQL détermine ces contraintes.

Comparaison NULL vs NOT NULL
NULL NOT NULL
Flexibilité Accepte les données manquantes Exige une valeur à l'insertion
Intégrité Pas de garantie sur la présence des données Assure la cohérence des informations
Performance Pas d'impact majeur Index plus efficaces avec NOT NULL

Utilisez NULL et NOT NULL pour les champs optionnels et critiques. La logique métier dicte ces choix. Dans un CRM, un nom est NOT NULL, un numéro de fax peut être NULL.

NULL et les clés primaires/étrangères

Les clés primaires doivent être NOT NULL pour garantir l'unicité. Les clés étrangères peuvent être NULL, matérialisant une relation optionnelle.

Une clé primaire NULL briserait l’unicité des enregistrements. En revanche, une clé étrangère NULL signale une absence de lien. La clé étrangère NULL permet des relations 0-x. Un employé peut avoir un manager NULL s’il n’en a pas.

Valeurs par défaut vs NULL pour les données manquantes

NULL représente une information inconnue, DEFAULT remplace les données manquantes par une valeur logique. Le choix dépend du sens des données.

  • Préférez NULL quand l'information est inconnue (ex : ville non renseignée)
  • Choisissez DEFAULT quand une valeur standard a du sens (ex : date d'inscription = maintenant)
  • Utilisez NOT NULL avec DEFAULT pour garantir la présence d'une valeur par défaut

Voici comment définir ces contraintes : CREATE TABLE users (id INT NOT NULL, name VARCHAR(50), country VARCHAR(2) DEFAULT 'FR'). Ici, country vaut 'FR' si aucune donnée n’est fournie. NULL reste possible pour name.

Impact de NULL sur les performances des requêtes

Les colonnes NULL n’impactent pas significativement les performances. Les index peuvent contenir des valeurs NULL, mais les SGBD gèrent mieux les index NOT NULL. Les jointures avec des clés pouvant être NULL ralentissent les requêtes. Optimiser les structures en évitant les NULL inutiles améliore les performances.

En SQL, NULL représente une valeur manquante, pas l’absence de données. Contrairement à zéro ou une chaîne vide, il sert à indiquer une information inconnue. Maîtrisez les clauses IS NULL, les fonctions COALESCE et les jointures adaptées pour éviter les pièges. Appliquez ces astuces pour des requêtes précises et des analyses fiables : vous maîtriserez les valeurs NULL comme un pro ! 🚀

{{formation-sql="/brouillon"}}

Faites un premier pas dans la data avec nos cours gratuits
Démarrer

Les derniers articles sur ce sujet

Difficulté :
Moyenne