SQL - IS NOT NULL : Guide pour débutants

Bonjour, futurs magiciens SQL ! Aujourd'hui, nous allons plonger dans un aspect fascinant de SQL qui a piégé de nombreux étudiants au fil des ans. Mais ne vous inquiétez pas - à la fin de ce tutoriel, vous gérerez les valeurs NULL comme un pro !

SQL - IS NOT NULL

L'opérateur IS NOT NULL en SQL

Commençons par les bases. En SQL, NULL est une valeur spéciale (ou plutôt, un manque de valeur) qui représente des informations manquantes ou inconnues. C'est comme lorsque vous remplissez un formulaire et laissez un champ vide - c'est essentiellement ce qu'est NULL dans une base de données.

Maintenant, où cela devient compliqué : vous ne pouvez pas utiliser des opérateurs de comparaison standards comme = ou != avec NULL. C'est là que notre héros du jour entre en jeu - l'opérateur IS NOT NULL !

Syntaxe de base

La syntaxe de base pour IS NOT NULL est :

SELECT column_name(s)
FROM table_name
WHERE column_name IS NOT NULL;

Reprenons cela avec un exemple du monde réel. Imaginons que nous avons une table appelée students avec des colonnes pour student_id, name, et email.

SELECT name, email
FROM students
WHERE email IS NOT NULL;

Cette requête renverra tous les noms et emails des étudiants, mais seulement pour ceux qui ont une adresse email dans la base de données. C'est comme dire : "Écoute, base de données, donne-moi tous les étudiants qui ont vraiment rempli leur champ email !"

Pourquoi ne pas utiliser '!=' ou '<>' ?

Vous pourriez vous demander : "Pourquoi ne pouvons-nous pas simplement utiliser email != NULL ?" Excellent pregunta ! En SQL, NULL représente une valeur inconnue. Puisque c'est inconnu, nous ne pouvons pas le comparer à quoi que ce soit - pas même à lui-même ! C'est comme essayer de comparer des pommes à... eh bien, rien.

Regardons un exemple :

-- Cela ne fonctionnera pas comme prévu
SELECT name, email
FROM students
WHERE email != NULL;

-- Voici la bonne manière
SELECT name, email
FROM students
WHERE email IS NOT NULL;

La première requête ne renverra en fait aucun résultat, indépendamment des données de votre table. La seconde requête renverra correctement toutes les lignes où l'email a une valeur.

IS NOT NULL avec la fonction COUNT()

Maintenant que nous comprenons les bases, voyons comment IS NOT NULL peut être utilisé avec d'autres fonctions SQL, comme COUNT().

Compter les valeurs non NULL

La fonction COUNT() est utilisée pour compter le nombre de lignes qui correspondent à un critère spécifique. Lorsqu'elle est combinée avec IS NOT NULL, elle peut nous dire combien de lignes ont une valeur dans une colonne spécifique.

SELECT COUNT(*) AS total_students,
COUNT(email) AS students_with_email
FROM students;

Dans cette requête, COUNT(*) compte toutes les lignes, tandis que COUNT(email) ne compte que les lignes où l'email n'est pas NULL. C'est une manière rapide de voir à quel point vos données sont complètes !

Calculs de pourcentage

Nous pouvons aller plus loin et calculer le pourcentage d'étudiants qui ont fourni leur email :

SELECT
COUNT(*) AS total_students,
COUNT(email) AS students_with_email,
(COUNT(email) * 100.0 / COUNT(*)) AS email_percentage
FROM students;

Cette requête non seulement compte le total des étudiants et ceux avec des emails, mais calcule également quel pourcentage d'étudiants ont fourni leur email. C'est comme prendre un relevé de presence et découvrir qui a fait ses devoirs !

IS NOT NULL avec l'instruction DELETE

Parfois, nous devons nettoyer notre base de données en supprimant des lignes avec des données manquantes. C'est là que IS NOT NULL devient utile avec l'instruction DELETE.

DELETE de base avec IS NOT NULL

Voici comment vous pourriez supprimer toutes les lignes où une certaine colonne est NULL :

DELETE FROM students
WHERE phone_number IS NULL;

Cette requête supprimerait toutes les enregistrements d'étudiants où le numéro de téléphone n'est pas fourni. C'est comme effacer toutes les lignes blanches dans votre carnet d'adresses.

Combinaison de conditions

Nous pouvons également combiner IS NOT NULL avec d'autres conditions :

DELETE FROM students
WHERE graduation_year IS NULL
AND enrollment_date < '2020-01-01';

Cette requête supprime les enregistrements des étudiants qui n'ont pas de année de diplomation et qui ont été inscrits avant 2020. C'est une manière de nettoyer les vieilles registrations incomplètes.

IS NOT NULL avec l'instruction UPDATE

Enfin, voyons comment IS NOT NULL peut être utilisé avec les instructions UPDATE pour modifier des données existantes.

Mise à jour des valeurs non NULL

Supposons que nous voulons mettre à jour toutes les adresses email qui ne sont pas NULL pour qu'elles soient en minuscules :

UPDATE students
SET email = LOWER(email)
WHERE email IS NOT NULL;

Cette requête change toutes les adresses email existantes en minuscules, mais seulement si elles ne sont pas NULL. C'est comme passer votre liste de contacts et vous assurer que toutes les adresses email sont formatées de manière cohérente.

Mises à jour conditionnelles

Nous pouvons également utiliser IS NOT NULL dans des instructions UPDATE plus complexes :

UPDATE students
SET status = 'Active'
WHERE enrollment_date IS NOT NULL
AND graduation_date IS NULL;

Cette requête met à jour le statut en 'Active' pour tous les étudiants qui ont une date d'inscription mais pas de date de diplomation. C'est une manière d'actualiser automatiquement les statuts des étudiants en fonction des informations que nous avons.

Conclusion

Et voilà, les amis ! Nous avons voyagé à travers le pays de IS NOT NULL, explorant son utilisation dans les instructions SELECT, COUNT, DELETE et UPDATE. Souvenez-vous, gérer correctement les valeurs NULL est crucial dans la gestion de bases de données. C'est la différence entre obtenir des résultats précis et... eh bien, des résultats NULL !

Voici un tableau de réference des méthodes que nous avons couvertes :

Opération Exemple
SELECT SELECT * FROM table WHERE column IS NOT NULL
COUNT SELECT COUNT(column) FROM table
DELETE DELETE FROM table WHERE column IS NULL
UPDATE UPDATE table SET column = value WHERE other_column IS NOT NULL

Pratiquez ces requêtes, jouez avec elles, et bientôt vous trouverez que gérer les valeurs NULL est chose courante. Continuez à coder, continuez à apprendre, et souvenez-vous - dans le monde des bases de données, parfois rien (NULL) peut signifier tout !

Credits: Image by storyset