Cours SQL et MySQL · Module 3: Filtrer (WHERE)

Le vide dans le catalogue : IS NULL

2 min de lecture
Dans cette leçon3

Tous les parchemins n'ont pas tous leurs champs remplis. Parfois l'année de naissance d'un auteur est inconnue, et un livre emprunté n'a pas encore été rendu. Ce vide - l'absence de toute valeur - s'appelle NULL dans une base de données.

NULL n'est pas zéro !

Important : NULL n'est pas la même chose que le nombre 0 ni que le texte vide ''. NULL signifie « il n'y a rien ici, la valeur est inconnue ». C'est comme un champ vide sur un parchemin que personne n'a encore rempli.

Pourquoi = NULL ne fonctionne pas

À cause de cette nature « inconnue », nous ne pouvons pas comparer NULL avec le signe = ordinaire. Cette requête ne fonctionnera pas correctement :

1SELECT * FROM wypozyczenia
2WHERE data_zwrotu = NULL;

La Bibliothèque ne sait pas si « inconnu » est égal à « inconnu », elle ne renverra donc jamais rien. C'est pourquoi MySQL possède des opérateurs spéciaux.

IS NULL et IS NOT NULL

Pour vérifier si une valeur est vide, nous utilisons IS NULL :

1SELECT * FROM wypozyczenia
2WHERE data_zwrotu IS NULL;

Cela signifie : « Des emprunts qui n'ont pas encore été rendus » - car tant que le livre reste chez le lecteur, data_zwrotu demeure vide.

Pour trouver les lignes qui ont bien une valeur, nous utilisons IS NOT NULL :

1SELECT * FROM wypozyczenia
2WHERE data_zwrotu IS NOT NULL;

Cela signifie : « Des emprunts déjà rendus » - car data_zwrotu a été rempli.

Retiens une règle simple : avec NULL, n'utilise jamais =, seulement IS NULL ou IS NOT NULL. C'est l'une des erreurs les plus fréquentes chez les scribes débutants - toi, tu sauras déjà l'éviter !

Tu as repéré une erreur dans cette leçon ?

Teste tes connaissances

Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.

  1. 1. Que signifie la valeur NULL dans une colonne ?

  2. 2. Pourquoi la condition WHERE data_zwrotu = NULL ne fonctionne-t-elle pas correctement ?

Tâches pratiques dans le jeu

  • Éditeur de code

    Écris une requête qui récupère toutes les colonnes de la table wypozyczenia pour les emprunts qui n'ont pas encore été rendus, c'est-à-dire où data_zwrotu est vide (NULL).

  • Éditeur de code

    Écris une requête qui récupère toutes les colonnes de la table wypozyczenia pour les emprunts qui ont déjà été rendus, c'est-à-dire où data_zwrotu n'est PAS vide. Utilise IS NOT NULL.

  • Tri horizontal

    Ordonne sur une ligne la condition qui vérifie que la date de retour est vide :