MySQL - Opérateur IS NOT NULL

Salut à toi, aspirant passionné de bases de données ! Aujourd'hui, nous allons plonger dans le merveilleux monde de MySQL et explorer un petit opérateur très utile appelé IS NOT NULL. Ne t'inquiète pas si tu es nouveau dans le domaine de la programmation ; je vais te guider pas à pas, tout comme j'ai fait pour des centaines d'étudiants au cours de mes années d'enseignement. Alors, prends une tasse de ta boisson favorite et c'est parti !

MySQL - IS NOT NULL Operator

Opérateur IS NOT NULL de MySQL

Imagine que tu organises une fête d'anniversaire et que tu fais une liste des invités. Certains ont confirmé leur venue, d'autres ont dit qu'ils ne pourront pas venir, et d'autres n'ont pas encore répondu. Dans le monde des bases de données, nous pourrions représenter cette situation avec trois valeurs : 'Oui', 'Non' et NULL (pour ceux qui ne sont pas encore intervenus). L'opérateur IS NOT NULL nous aide à trouver tous les invités qui nous ont donné une réponse, qu'elle soit 'Oui' ou 'Non'.

Dans MySQL, NULL représente une valeur manquante ou inconnue. Ce n'est pas la même chose qu'une chaîne vide ou zéro ; c'est l'absence de toute valeur. L'opérateur IS NOT NULL nous permet de trouver des lignes où une colonne particulière a une valeur (n'importe quelle valeur) plutôt que d'être NULL.

Regardons un exemple simple :

SELECT * FROM guests WHERE response IS NOT NULL;

Cette requête renverrait tous les invités qui ont donné une réponse, qu'ils viennent à la fête ou non.

Maintenant, créons une table et voyons cela en action :

CREATE TABLE guests (
id INT PRIMARY KEY,
name VARCHAR(50),
response VARCHAR(3)
);

INSERT INTO guests VALUES
(1, 'Alice', 'Oui'),
(2, 'Bob', 'Non'),
(3, 'Charlie', NULL),
(4, 'David', 'Oui'),
(5, 'Eve', NULL);

SELECT * FROM guests WHERE response IS NOT NULL;

Cette requête renverra :

id name response
1 Alice Oui
2 Bob Non
4 David Oui

Comme vous pouvez le voir, Charlie et Eve, qui n'ont pas répondu (NULL), ne sont pas inclus dans le résultat.

IS NOT NULL avec la fonction COUNT()

Maintenant, disons que vous voulez savoir combien d'invités ont réellement répondu. Nous pouvons utiliser la fonction COUNT() en combinaison avec IS NOT NULL pour obtenir cette information :

SELECT COUNT(*) AS responded_guests
FROM guests
WHERE response IS NOT NULL;

Cette requête renverra :

responded_guests
3

Cela nous indique que 3 invités ont répondu à notre invitation. Pas mal, n'est-ce pas ?

IS NOT NULL avec l'instruction UPDATE

Parfois, nous pouvons vouloir mettre à jour notre base de données en fonction de la valeur est NULL ou non. Par exemple, disons que nous voulons changer toutes les réponses NULL en 'Peut-être' :

UPDATE guests
SET response = 'Peut-être'
WHERE response IS NULL;

SELECT * FROM guests;

Après cette mise à jour, notre table guests ressemblera à ceci :

id name response
1 Alice Oui
2 Bob Non
3 Charlie Peut-être
4 David Oui
5 Eve Peut-être

IS NOT NULL avec l'instruction DELETE

Dans certains cas, nous pouvons vouloir supprimer des lignes avec des valeurs NULL. Par exemple, si nous décidons de ne garder que les invités qui ont donné une réponse definitive :

DELETE FROM guests
WHERE response IS NULL;

SELECT * FROM guests;

Si nous exécutons ceci avant notre instruction UPDATE précédente, cela supprimerait Charlie et Eve de notre liste d'invités :

id name response
1 Alice Oui
2 Bob Non
4 David Oui

Opérateur IS NOT NULL en utilisant un programme client

Maintenant, parlons de la manière dont vous pourriez utiliser l'opérateur IS NOT NULL dans une situation réelle en utilisant un programme client. Imaginez que vous écrivez un script Python pour gérer votre liste d'invités :

import mysql.connector

# Connecter à la base de données
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="party_planner"
)

cursor = db.cursor()

# Récupérer tous les invités qui ont répondu
cursor.execute("SELECT * FROM guests WHERE response IS NOT NULL")
responded_guests = cursor.fetchall()

print("Invités qui ont répondu :")
for guest in responded_guests:
print(f"- {guest[1]}: {guest[2]}")

# Compter les invités qui n'ont pas répondu
cursor.execute("SELECT COUNT(*) FROM guests WHERE response IS NULL")
no_response_count = cursor.fetchone()[0]

print(f"\nNombre d'invités qui n'ont pas répondu: {no_response_count}")

# Fermer la connexion
db.close()

Ce script se connecte à votre base de données, récupère tous les invités qui ont répondu, imprime leurs noms et leurs réponses, puis compte combien d'invités n'ont pas encore répondu.

Et voilà ! Nous avons exploré l'opérateur IS NOT NULL sous différents angles. Souvenez-vous, dans le monde des bases de données, savoir ce que vous ne savez pas (les valeurs NULL) peut être tout aussi important que de savoir ce que vous savez. L'opérateur IS NOT NULL est votre compagnon fidèle pour naviguer dans ce terrain.

En conclusion, je me souviens d'un étudiant qui m'a dit que comprendre les valeurs NULL, c'était comme voir l'encre invisible dans les bases de données. J'espère que ce tutoriel vous a aidé à développer votre propre 'vision NULL' ! Continuez à pratiquer, restez curieux, et bon codage !

Credits: Image by storyset