Passer au contenu

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 :

  1. Absence de valeur : NULL ne signifie pas “zéro” ou “vide”. C’est une indication que la valeur est inconnue, indisponible ou non applicable.
  2. Type agnostique : NULL peut apparaître dans n’importe quel type de colonne (entier, texte, date, etc.) pour indiquer l’absence de valeur.
  3. Opérations sur NULL : Les opérations arithmétiques ou les comparaisons avec NULL retournent également NULL ou des résultats indéfinis. Par exemple, 5 + NULL est NULL et NULL = NULL est aussi NULL, pas TRUE.

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

CREATE TABLE employes (
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
prenom TEXT NOT NULL,
date_naissance DATE,
date_de_depart DATE 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 :

INSERT INTO employes (nom, prenom, date_naissance, date_de_depart)
VALUES ('Dupont', 'Jean', '1985-05-15', NULL);

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 :

SELECT * FROM employes WHERE date_de_depart IS NULL;

Et pour trouver ceux qui ont quitté l’entreprise :

SELECT * FROM employes WHERE date_de_depart IS NOT NULL;

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.

SELECT nom, prenom, COALESCE(date_de_depart, 'Toujours en poste') AS statut
FROM employes;

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 :

  1. 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.
  2. 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.