Comprendre la Valeur NULL en SQL
En SQL, la valeur NULL
est un concept fondamental mais souvent source de confusion. Elle représente l’absence de valeur ou une valeur inconnue dans une base de données. Contrairement à zéro, une chaîne vide ou même “aucune donnée”, NULL
indique spécifiquement qu’une valeur n’a pas été renseignée ou qu’elle est indéfinie.
Qu’est-ce que la valeur NULL ?
La valeur NULL
est utilisée pour représenter l’absence de données dans une colonne d’une table. Voici quelques points essentiels pour bien comprendre NULL
:
- Absence de valeur :
NULL
ne signifie pas “zéro” ou “vide”. C’est une indication que la valeur est inconnue, indisponible ou non applicable. - Type agnostique :
NULL
peut apparaître dans n’importe quel type de colonne (entier, texte, date, etc.) pour indiquer l’absence de valeur. - Opérations sur NULL : Les opérations arithmétiques ou les comparaisons avec
NULL
retournent égalementNULL
ou des résultats indéfinis. Par exemple,5 + NULL
estNULL
etNULL = NULL
est aussiNULL
, pasTRUE
.
Pourquoi utiliser NULL ?
La valeur NULL
est utile dans de nombreuses situations où les données sont optionnelles ou inconnues. Par exemple :
- Données manquantes : Lors de la collecte de données où certaines informations ne sont pas encore disponibles ou n’ont pas été fournies, vous pouvez utiliser
NULL
. - Optionnalité : Si certaines colonnes d’une table sont optionnelles,
NULL
permet de laisser ces colonnes vides pour certains enregistrements. - Indétermination : Dans les cas où une valeur est indéterminée,
NULL
est utilisé pour représenter cette indétermination de manière explicite.
Exemple d’utilisation de NULL
Imaginons que vous avez une table appelée employes
pour stocker des informations sur les employés d’une entreprise. Certaines colonnes, comme date_de_depart
, pourraient être NULL
pour les employés qui travaillent encore dans l’entreprise.
Création de la table avec des colonnes acceptant NULL
Dans cet exemple :
- date_naissance : Cette colonne pourrait avoir des valeurs
NULL
si la date de naissance d’un employé n’est pas renseignée. - date_de_depart : Cette colonne peut être
NULL
pour les employés qui n’ont pas encore quitté l’entreprise.
Insérer des valeurs avec NULL
Pour insérer un employé qui est toujours en poste (donc sans date_de_depart
connue), vous pouvez insérer NULL
comme suit :
Requêtes avec NULL
Lorsque vous effectuez des requêtes SQL, il est important de traiter les valeurs NULL
correctement, car NULL
ne se comporte pas comme les autres valeurs.
Comparer avec NULL
Vous ne pouvez pas utiliser l’opérateur égal =
pour comparer une colonne avec NULL
. Au lieu de cela, vous devez utiliser les opérateurs IS NULL
ou IS NOT NULL
.
Par exemple, pour trouver tous les employés qui sont toujours en poste :
Et pour trouver ceux qui ont quitté l’entreprise :
Gérer les NULL avec COALESCE
La fonction COALESCE
est souvent utilisée pour gérer les NULL
en SQL. Elle renvoie la première valeur non-NULL
parmi ses arguments.
Dans cet exemple, pour les employés encore en poste, au lieu d’afficher NULL
, la requête retournera “Toujours en poste”.
Inconvénients de NULL
Bien que NULL
soit utile, son utilisation peut aussi compliquer les requêtes SQL :
- Complexité des requêtes : Travailler avec
NULL
nécessite de connaître des opérateurs spécifiques (IS NULL
,IS NOT NULL
), ce qui peut rendre les requêtes plus complexes. - Résultats inattendus : Les opérations ou comparaisons impliquant
NULL
peuvent donner des résultats inattendus, surtout si elles ne sont pas correctement gérées.