Aller au contenu principal

Les mots clés IN et NOT IN

Notions théoriques

En SQL, les mots clés IN et NOT IN sont utilisés pour vérifier si une valeur se trouve dans une liste de valeurs ou non.

  • IN : Si la valeur est présente dans la liste, la condition est vraie.
  • NOT IN : Si la valeur n'est pas présente dans la liste, la condition est vraie.

Ces opérateurs sont souvent utilisés dans la clause WHERE pour filtrer les résultats en fonction d'une liste de valeurs.

Exemple pratique

Imaginons que nous voulons trouver tous les livres écrits par les auteurs 'Verne', 'Hugo' et 'Corneille'.

Nous pouvons utiliser l'opérateur IN pour cela :

SELECT titre
FROM livres
JOIN auteurs ON livres.idauteur = auteurs.idauteur
WHERE auteurs.nom IN ('Verne', 'Hugo', 'Corneille');
astuce

N'oubliez pas, la pratique est la clé pour maîtriser une nouvelle compétence.

Testez vous même les requêtes ;-)

Inversement, si nous voulons trouver tous les livres qui n'ont pas été écrits par ces auteurs, nous pouvons utiliser NOT IN :

SELECT titre
FROM livres
JOIN auteurs ON livres.idauteur = auteurs.idauteur
WHERE auteurs.nom NOT IN ('Verne', 'Hugo', 'Corneille');

Test de mémorisation/compréhension


Que fait l'opérateur `IN` en SQL ?


Que fait l'opérateur `NOT IN` en SQL ?


Où ces opérateurs sont-ils généralement utilisés ?


Quelle est la requête qui trouve tous les livres écrits par 'Verne', 'Hugo' et 'Corneille' ?


Quelle est la requête qui trouve tous les livres qui n'ont pas été écrits par 'Verne', 'Hugo' et 'Corneille' ?



TP pour réfléchir et résoudre des problèmes

Télécharger le fichier 'cdi.sql' - Télécharger le MCD

MPD_bibliotheque.png

Dans ce TP, vous allez utiliser les opérateurs IN et NOT IN pour résoudre un problème.

Votre mission est de trouver*, parmi les données de la base bibliotheque,* le nom de tous les auteurs qui ont écrit plus d'un livre et qui ne sont pas dans la liste des auteurs 'Verne', 'Hugo' et 'Corneille'.

Pour chaque enregistrement, nous souhaitons afficher le nom de l'auteur et le nombre de livres qu'il a écrit.

Une solution

TP n°2

MPD_bibliotheque.png

Votre mission est de trouver*, parmi les données de la base bibliotheque,* le titre de tous les livres de Victor Hugo, Jules Verne ou Zola.

C'est à dire dont les auteurs sont dans la liste 'Hugo', 'Verne' ou 'Zola'.

Pour chaque enregistrement, nous souhaitons afficher le le nom de l'auteur et le titre du livre.

Une solution