SQL ET POSTGRE 5.40 Valeurs NULL
En SQL et plus particulièrement avec PostgreSQL, la valeur NULL représente l'absence d'information. Elle se distingue fondamentalement d'une chaîne vide ou de la valeur zéro : NULL signifie que la donnée n'est pas renseignée, pas qu'elle vaut « rien ». Comprendre cette nuance est essentiel pour écrire des requêtes correctes, car NULL se comporte différemment dans les comparaisons et les opérations.
Tester la présence de NULL
Pour vérifier si une colonne contient une valeur NULL, on n'utilise jamais l'opérateur d'égalité = , qui retournerait toujours un résultat indéterminé. On emploie à la place les mots-clés IS NULL et IS NOT NULL, qui sont les seuls moyens fiables de filtrer des lignes selon ce critère. Par exemple, pour récupérer les acteurs dont la date de décès n'est pas renseignée, on écrira une condition WHERE date_deces IS NULL.
Les principaux points à retenir sur les valeurs NULL :
- NULL n'est pas égal à 0 ni à une chaîne vide
- Toute opération arithmétique avec NULL produit NULL
- Les fonctions d'agrégation comme COUNT, SUM ou AVG ignorent les valeurs NULL
- Les comparaisons classiques (=, <, >) avec NULL renvoient un résultat inconnu
- Pour remplacer NULL par une valeur par défaut, on utilise COALESCE ou la fonction IFNULL
Lorsque vous concevez un schéma de base de données, choisir d'autoriser ou non NULL dans une colonne est une décision importante. Les colonnes obligatoires sont déclarées NOT NULL pour garantir que l'information est toujours présente. À l'inverse, autoriser NULL permet de modéliser proprement les données optionnelles, comme une date de fin pour un événement encore en cours. Maîtriser ces comportements évite de nombreux pièges lors de l'écriture de requêtes complexes.