14th May 2024 8 minutes de lecture Opérateur SQL IN Radu Gheorghiu opérateur sql Table des matières Introduction à l'opérateur SQL IN Utilisation de l'opérateur SQL IN Syntaxe de l'opérateur IN Utilisation de l'opérateur SQL NOT IN Utilisation de IN avec SELECT Utilisation de NOT IN avec SELECT Exercice : Défi de l'opérateur IN Exemples et cas d'utilisation IN avancés Sous-requêtes corrélées Traitement des grandes listes de valeurs Combinaison de IN avec d'autres opérateurs Il est maintenant temps de s'entraîner à utiliser SQL IN Pourquoi faut-il connaître l'opérateur SQL IN ? Découvrez ce que vous pouvez faire avec cet opérateur petit mais puissant. L'opérateur IN est un outil fondamental en SQL, permettant aux analystes de données et aux développeurs de filtrer et d'extraire des sous-ensembles spécifiques de données des bases de données. Bien que son utilisation de base puisse sembler simple, la maîtrise des nuances et des applications avancées de l'opérateur SQL IN peut considérablement améliorer vos compétences SQL et conduire à des requêtes plus puissantes et optimisées. Dans ce guide complet, nous allons nous plonger dans l'opérateur SQL IN, en couvrant sa syntaxe, ses cas d'utilisation, les considérations de performance et les meilleures pratiques. Introduction à l'opérateur SQL IN L'opérateur SQL IN est utilisé pour vérifier si une valeur correspond à n'importe quelle valeur d'une liste ou d'une sous-requête spécifiée. Il fournit un moyen concis de combiner plusieurs conditions en utilisant la logique OR sans avoir à écrire explicitement chaque condition séparément. Cela peut grandement simplifier vos requêtes SQL et améliorer leur lisibilité, en particulier lorsque vous avez affaire à un grand nombre de conditions. Si vous cherchez un point de départ pour construire des bases solides en SQL, je vous recommande notre cours SQL pour les débutants . Il contient 129 exercices pratiques qui vous permettront de maîtriser les bases du langage SQL et de gagner en confiance. Si vous connaissez déjà les bases du langage SQL, jetez un coup d'œil à notre cours La pratique du SQL - il contient plus de 1 000 exercices pour vous aider à affiner vos compétences. Utilisation de l'opérateur SQL IN L'une des utilisations les plus courantes de l'opérateur SQL IN consiste à vérifier si une valeur correspond à n'importe quelle valeur d'une liste. En voici un exemple : SELECT * FROM employees WHERE department_id IN (10, 20, 30); Dans cette requête, l'opérateur SQL IN est utilisé pour récupérer toutes les lignes de la table employees dont la valeur department_id est 10, 20 ou 30. Syntaxe de l'opérateur IN L'opérateur SQL IN est un raccourci pour plusieurs conditions OR sur le même champ, ce qui rend la requête plus concise et plus lisible. Voici la syntaxe de base : SELECT column1, column2, ... FROM table_name WHERE column_name IN (value1, value2, ...); Utilisation de l'opérateur SQL NOT IN L'opérateur SQL NOT IN est l'opposé de l'opérateur SQL IN. Il est utilisé pour extraire les enregistrements dont la valeur ne correspond à aucune valeur de la liste spécifiée. Voici un exemple : SELECT * FROM products WHERE product_category NOT IN ('Electronics', 'Clothing'); Cette requête récupère toutes les lignes de la table products dont l'adresse product_category n'est ni "Électronique" ni "Vêtements". Utilisation de IN avec SELECT L'opérateur SQL IN peut également être utilisé avec une sous-requête, c'est-à-dire une requête imbriquée dans une autre requête. Cette combinaison puissante vous permet de filtrer les données sur la base des résultats d'une autre requête. En voici un exemple : SELECT product_name, product_price FROM products WHERE product_id IN ( SELECT product_id FROM orders WHERE order_date >= '2023-01-01' ); Dans cette requête, la sous-requête SELECT product_id FROM orders WHERE order_date >= '2023-01-01' récupère une liste de valeurs product_id pour les commandes passées à partir du 1er janvier 2023. La requête principale utilise ensuite l'opérateur IN pour récupérer les valeurs product_name et product_price pour tous les produits dont la valeur product_id figure dans la liste renvoyée par la sous-requête. Ce n'est qu'un exemple de la façon dont vous pouvez utiliser une sous-requête dans un opérateur IN. Il existe de nombreux types de sous -requêtes que vous pouvez écrire en SQL, mais pour une meilleure compréhension, nous vous recommandons de jeter un coup d'œil à d 'autres exemples d'utilisation d'une sous-requête. Utilisation de NOT IN avec SELECT Comme dans l'exemple précédent, vous pouvez utiliser l'opérateur NOT IN avec une sous-requête pour extraire les enregistrements qui ne correspondent pas aux résultats de la sous-requête. Voici un exemple : SELECT employee_name, department_name FROM employees WHERE department_id NOT IN (SELECT department_id FROM departments WHERE location = 'New York'); Cette requête extrait le nom de l'employé et le nom du service pour tous les employés qui ne font pas partie de services situés à New York. La sous-requête SELECT department_id FROM departments WHERE location = 'New York' récupère une liste de valeurs department_id pour les départements situés à New York. La requête principale utilise ensuite l'opérateur SQL NOT IN pour exclure les employés dont la valeur department_id figure dans la liste renvoyée par la sous-requête. Exercice : Défi de l'opérateur IN Maintenant que nous avons lu les différentes façons d'utiliser l'opérateur IN pour résoudre des problèmes SQL complexes, il est temps de mettre en pratique ce que nous avons appris. Imaginez que vous travaillez avec une base de données qui stocke des informations sur des livres. La base de données contient une table nommée Books avec les colonnes suivantes : BookID, Title, AuthorID, et GenreID. Il y a une autre table nommée Genres avec les colonnes GenreID et GenreName. Voici un exemple de quelques lignes que ces tables contiendraient. Le tableau Books table : BookIDTitleAuthorIDGenreID 1The Hitchhiker's Guide to the Galaxy11 2Dune21 3The Lord of the Rings32 4The Da Vinci Code43 5Harry Potter and the Sorcerer’s Stone52 6The Girl on the Train63 7Pride and Prejudice74 La table : La table : La table : La table : La table : La table : La table : La table Genres table : GenreIDGenreName 1Science Fiction 2Fantasy 3Mystery 4Romance 5Non-Fiction Votre défi consiste à écrire une requête SQL qui sélectionne tous les titres de livres appartenant aux genres "Science-fiction", "Fantasy" ou "Mystère". (Supposez que vous ne connaissez pas encore les valeurs de GenreID pour ces genres). Solution : SELECT Title FROM Books WHERE GenreID IN (SELECT GenreID FROM Genres WHERE GenreName = 'Science Fiction' OR GenreName = 'Fantasy' OR GenreName = 'Mystery'); Explication : Sélectionnez les titres de livres dans la table Books table. Filtrez les résultats à l'aide d'une clause WHERE et de l'opérateur IN afin d'inclure uniquement les lignes pour lesquelles GenreID est identique à GenreID dans le tableau Genres pour 'Science Fiction', 'Fantasy' ou 'Mystery'. Vous pouvez également écrire une requête qui utilise deux opérateurs IN: SELECT Title FROM Books WHERE GenreID IN (SELECT GenreID FROM Genres WHERE GenreName IN ('Science Fiction','Fantasy','Mystery')); Résultat : Title The Hitchhiker's Guide to the Galaxy Dune The Lord of the Rings Harry Potter and the Sorcerer's Stone The Da Vinci Code The Girl on the Train Exemples et cas d'utilisation IN avancés Si l'utilisation de base de l'opérateur SQL IN est relativement simple, sa véritable puissance réside dans sa capacité à gérer des scénarios complexes et des cas d'utilisation avancés. Nous allons en explorer quelques-uns : Sous-requêtes corrélées Les sous-requêtes corrélées sont des sous-requêtes qui font référence à des colonnes de la requête externe. Elles vous permettent de filtrer les données sur la base de critères complexes impliquant plusieurs tables et conditions. En voici un exemple : SELECT product_name, category_name FROM products p JOIN categories c ON p.category_id = c.category_id WHERE p.product_id IN (SELECT product_id FROM order_items oi WHERE oi.order_id IN (SELECT order_id FROM orders WHERE customer_id = 1001)); Dans cette requête, la sous-requête intérieure récupère les valeurs order_id pour un client spécifique. La sous-requête centrale utilise ensuite ces valeurs order_id pour extraire les valeurs product_id correspondantes de la table order_items table. Enfin, la requête principale utilise l'opérateur SQL IN pour récupérer les valeurs product_name et category_name pour ces produits. Les sous-requêtes corrélées ne sont qu'un des moyens avancés d'utiliser l'opérateur IN. Pour une compréhension approfondie de tous les types de sous-requêtes, nous vous recommandons ces 15 exercices pratiques sur les sous-requêtes. Traitement des grandes listes de valeurs Lorsque vous travaillez avec de grandes listes de valeurs, l'utilisation d'une sous-requête ou d'une table temporaire peut s'avérer plus efficace que l'énumération de toutes les valeurs dans la clause SQL IN. Cela peut améliorer les performances de la requête et réduire le risque d'atteindre les limites de longueur de la requête imposées par votre système de gestion de base de données. Voici un exemple : -- Create a temporary table with the desired values CREATE TEMPORARY TABLE temp_values (value INT); INSERT INTO temp_values (value) VALUES (10), (20), (30), ...; -- Use the temporary table with the SQL IN operator SELECT * FROM employees WHERE department_id IN (SELECT value FROM temp_values); Dans cet exemple, une table temporaire temp_values est créée et remplie avec les valeurs souhaitées. La requête principale utilise ensuite une sous-requête pour extraire ces valeurs de la table temporaire et filtrer la table en conséquence. employees tableau en conséquence. Combinaison de IN avec d'autres opérateurs L'opérateur IN peut être combiné avec d'autres opérateurs SQL, tels que AND et OR, pour créer des conditions de filtrage plus complexes. Cela vous permet de gérer des scénarios dans lesquels vous devez filtrer des données sur la base de plusieurs critères impliquant différents opérateurs. En voici un exemple : SELECT * FROM orders WHERE order_date >= '2023-01-01' AND customer_id IN (SELECT customer_id FROM customers WHERE country = 'USA') AND total_amount > 1000; Dans cette requête, IN est utilisé en combinaison avec AND pour filtrer les commandes en fonction de la date de commande, du pays du client et du montant total. Il est maintenant temps de s'entraîner à utiliser SQL IN L'opérateur IN est un outil puissant et polyvalent qui peut grandement simplifier vos tâches d'analyse de données et de création de rapports en SQL. En comprenant sa syntaxe, son utilisation avancée, les considérations de performance et les meilleures pratiques, vous pouvez utiliser IN pour filtrer et extraire efficacement les données pertinentes de vos bases de données tout en garantissant une performance et une maintenabilité optimales des requêtes. Nous vous remercions d'avoir lu notre article ; nous espérons que vous avez apprécié de découvrir les puissantes fonctionnalités de l'opérateur SQL IN. Si vous débutez avec SQL, consultez notre cours interactif SQL pour les débutants. Si vous êtes un utilisateur chevronné de SQL et que vous recherchez une pratique concrète, consultez notre cours La pratique du SQL. Bon apprentissage ! Tags: opérateur sql