Requêtes Imbriquées
Glissez pour afficher le menu
L'administration de l'école est ravie de vos récentes réalisations et souhaite aller de l'avant.
Alors qu'ils entament leurs vacances d'été, vous avez l'opportunité d'explorer de nouvelles méthodes et d'améliorer vos compétences en SQL.
L'accent sera mis sur les requêtes imbriquées, un concept clé en SQL.
Les requêtes imbriquées, ou sous-requêtes imbriquées, sont des éléments essentiels du SQL dans lesquels une requête se trouve à l'intérieur d'une autre requête. Ces constructions permettent diverses opérations telles que le filtrage, le calcul et la récupération de données, nécessitant souvent l'intégration de sous-requêtes.
Examinez un exemple issu de la base de données de l'entreprise. À mesure que l'entreprise se développe, une nouvelle table department a été ajoutée. Cela modifie le fonctionnement de notre base de données.
Consultez la structure de la nouvelle table pour comprendre son rôle dans la base de données :
La nouvelle table contient les départements, leurs types et leurs budgets. Et dans la table employee, comme vous vous en souvenez peut-être, il y a des informations sur le département auquel chaque employé appartient.
Considérer un exemple où des requêtes imbriquées sont utilisées pour extraire les employés qui travaillent dans des départements ayant un budget de 500 000 $ ou moins :
1234567SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Une clause WHERE est utilisée pour spécifier que le nom du département doit être présent dans la table récupérée avec la requête interne.
Décomposer cette requête en deux requêtes distinctes pour comprendre son fonctionnement. Tout d'abord, récupérer les noms des départements dont le budget est inférieur ou égal à 500 000 $ (requête interne) :
123SELECT name FROM department WHERE budget <= 500000
Maintenant, en tenant compte du résultat obtenu, écrire la seconde requête pour récupérer des informations sur les employés de ces départements :
12345SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Le résultat de cette requête sera identique à celui de la première requête.
Voici une explication étape par étape :
-
La requête interne récupère les
namesdes départements nécessaires ; -
La clause
WHEREvérifie si ces départements sont dans la table issue de la requête interne ; -
Obtention du résultat souhaité.
Voici la syntaxe de base pour une requête interne :
SELECT columns
FROM table_1
WHERE column_name IN (
SELECT column
FROM table_2
other clauses
)
Lors de l'utilisation de requêtes imbriquées, gardez à l'esprit les points importants suivants :
-
Résultat unique dans la sous-requête : s'assurer que la requête imbriquée retourne une seule colonne. Si elle est utilisée dans une comparaison, elle doit idéalement retourner une seule valeur. Ceci est crucial pour les opérateurs comme
=,>,<,>=,<=,<>; -
Types de données : le type de données de la colonne retournée doit correspondre à celui de la colonne à laquelle elle est comparée, afin d'éviter les erreurs ;
-
Optimisation : les requêtes imbriquées peuvent être lentes, surtout si elles sont exécutées pour chaque ligne de la requête principale ;
-
Utilisation de l'opérateur IN : les requêtes imbriquées utilisent souvent l'opérateur
INpour vérifier la présence de valeurs dans un sous-ensemble. Il est également possible d'utiliser des opérateurs de comparaison pour des conditions plus complexes.
1. Qu'est-ce qu'une requête imbriquée en SQL ?
2. Quel opérateur SQL est couramment utilisé avec les requêtes imbriquées pour vérifier des valeurs dans un sous-ensemble ?
3. Pourquoi est-il important que le type de données de la colonne renvoyée par une requête imbriquée corresponde à la colonne à laquelle elle est comparée ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion