SQL - Valeurs NULL : Comprendre l'Inconnu

Salut à toi, futurs magiciens des bases de données ! Aujourd'hui, nous allons plonger dans un aspect fascinant de SQL qui souvent laisse les novices perplexe - les valeurs NULL. Ne t'inquiète pas si tu n'as jamais écrit une ligne de code auparavant ; je vais te guider à travers ce concept pas à pas, comme j'ai fait pour des centaines d'étudiants au fil des ans. Alors, prends une tasse de ta boisson favorite et rejoins-moi dans cette aventure SQL !

SQL - NULL Values

Qu'est-ce qu'une Valeur NULL ?

Avant de rentrer dans les détails, comprenons ce que NULL signifie réellement en SQL. Imagines que tu remplis un formulaire, et il y a un champ qui demande ton prénom du milieu. Mais que faire si tu n'as pas de prénom du milieu ? Tu ne peux pas écrire "pas de prénom du milieu" parce que ce n'est pas précis - tu ne dis pas que tu as un prénom du milieu appelé "pas de prénom du milieu". Tu laisses simplement ce champ vide. Ce vide, mes amis, c'est essentiellement ce que NULL représente en SQL.

En SQL, NULL est un marqueur spécial utilisé pour indiquer qu'une valeur de données n'existe pas dans la base de données. Ce n'est pas zéro, ce n'est pas une chaîne vide, c'est l'absence de toute valeur. Envisage-le comme la manière de SQL de dire, "Je ne sais pas" ou "Cette information n'est pas disponible."

Créer une Table sans Valeurs NULL

Maintenant que nous comprenons ce qu'est NULL, voyons comment nous pouvons créer une table qui n'autorise pas les valeurs NULL. Cela est particulièrement utile lorsque tu as des données que tu dois absolument avoir pour chaque enregistrement.

Exemple 1 : Créer une Table Étudiants

CREATE TABLE Students (
StudentID INT NOT NULL,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
Age INT NOT NULL,
Email VARCHAR(100)
);

Dans cet exemple, nous créons une table appelée "Students". Reprenons ce qui se passe :

  1. StudentID, FirstName, LastName, et Age sont tous déclarés comme NOT NULL. Cela signifie que ces champs doivent avoir une valeur ; ils ne peuvent pas être laissés vides.
  2. Le champ Email n'a pas NOT NULL, ce qui signifie qu'il est acceptable qu'un étudiant ne fournisse pas d'adresse email.

En utilisant NOT NULL, nous disons à notre base de données, "Hey, nous avons absolument besoin de cette information pour chaque étudiant. Pas d'excuses !"

Mettre à Jour les Valeurs NULL dans une Table

Parfois, tu peux te trouver avec des valeurs NULL dans ta table que tu veux mettre à jour. Voyons comment nous pouvons le faire.

Exemple 2 : Mettre à Jour les Adresses Email NULL

Imaginons que nous nous rendons compte que nous avons besoin d'adresses email pour tous nos étudiants, et que nous voulons mettre à jour celles qui sont actuellement NULL.

UPDATE Students
SET Email = '[email protected]'
WHERE Email IS NULL;

Cette requête fait ce qui suit :

  1. Elle regarde la table Students.
  2. Pour tout enregistrement où Email IS NULL (souviens-toi, nous ne pouvons pas utiliser = NULL !), elle définit l'email à '[email protected]'.

C'est comme dire, "Pour tout étudiant qui ne nous a pas donné d'email, utilisons cette adresse email factice pour l'instant."

Supprimer les Records avec des Valeurs NULL

Parfois, tu peux vouloir supprimer des enregistrements qui ont des valeurs NULL dans certains champs. Voyons comment nous pouvons le faire.

Exemple 3 : Supprimer les Étudiants sans Information d'Âge

DELETE FROM Students
WHERE Age IS NULL;

Cette requête supprimera tout enregistrement étudiant où le champ Age est NULL. C'est comme dire, "Si nous ne savons pas l'âge d'un étudiant, supprimons leur enregistrement de notre base de données."

Sois prudent avec des opérations comme celle-ci ! Assure-toi toujours que tu veux vraiment supprimer ces enregistrements avant d'exécuter une telle requête.

Travailler avec NULL dans les Clauses WHERE

Une chose difficile à propos des valeurs NULL est qu'on ne peut pas utiliser les opérateurs de comparaison habituels avec elles. Voyons comment vérifier correctement les valeurs NULL dans les clauses WHERE.

Exemple 4 : Trouver les Étudiants avec des Adresses Email Manquantes

SELECT FirstName, LastName
FROM Students
WHERE Email IS NULL;

Cette requête nous donnera une liste de tous les étudiants qui n'ont pas fourni d'adresse email. Note que nous utilisons IS NULL au lieu de = NULL. C'est une erreur courante que même les programmeurs expérimentés font parfois !

NULL et les Fonctions d'Aggrégation

Les valeurs NULL peuvent également affecter le fonctionnement des fonctions d'agrégation. Jetons un exemple.

Exemple 5 : Calculer l'Age Moyen

SELECT AVG(Age) AS AverageAge
FROM Students;

Cette requête calcule l'âge moyen de tous les étudiants. Voici la partie intéressante : les valeurs NULL sont complètement ignorées dans ce calcul. Donc si tu as 10 étudiants, mais que seulement 8 ont leur âge rempli, la moyenne sera calculée sur ces 8 valeurs.

Conclusion

Et voilà, les amis ! Nous avons parcouru le territoire des valeurs NULL en SQL. Nous avons vu comment créer des tables sans NULL, comment mettre à jour et supprimer des enregistrements avec des valeurs NULL, et comment travailler avec les NULL dans nos requêtes.

Souviens-toi, NULL n'est pas zéro, ce n'est pas une chaîne vide, c'est l'absence de valeur. C'est la manière de SQL de dire, "Je ne sais pas." Et maintenant, tu sais comment gérer ces situations "je ne sais pas" comme un pro !

Continue à t'entraîner avec ces concepts, et avant de t'en rendre compte, tu navigueras dans le monde des bases de données avec confiance. Bonne requête !

Credits: Image by storyset