Contenu du cours
SQL Intermédiaire
SQL Intermédiaire
Requêtes Imbriquées
La direction de l'école est ravie de nos récentes réussites et est impatiente d'aller de l'avant.
Alors qu'ils commencent leurs vacances d'été, nous avons l'opportunité de découvrir de nouvelles méthodes et d'améliorer nos compétences en SQL.
Notre objectif sera centré sur les requêtes imbriquées, un concept clé en SQL.
Regardons un exemple tiré de la base de données de notre entreprise. À mesure que l'entreprise se développe, nous avons ajouté une nouvelle table department
. Cela modifie le fonctionnement de notre base de données.
Examinons la structure de la nouvelle table pour comprendre son rôle dans notre base de données:
La nouvelle table contient des 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érons un exemple où nous utilisons des requêtes imbriquées pour récupérer les employés qui travaillent dans des départements avec des budgets de 500 000 dollars ou moins :
SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Nous utilisons une clause WHERE
pour spécifier que le nom du département doit être présent dans la table que nous récupérons avec la requête interne.
Répartissons cette requête en deux requêtes distinctes pour voir comment cela fonctionne. Tout d'abord, récupérons les noms des départements avec des budgets de 500 000 $ ou moins (notre requête interne):
SELECT name FROM department WHERE budget <= 500000
Maintenant, compte tenu du résultat obtenu, écrivons la deuxième requête pour récupérer des informations sur les employés de ces départements:
SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Le résultat de cette requête sera le même que la première requête.
Voici une description étape par étape :
-
La sous-requête interne récupère les
names
des départements dont nous avons besoin; -
La clause
WHERE
vérifie si ces départements sont dans la table de la sous-requête interne; -
Nous obtenons le résultat souhaité.
Voici la syntaxe de base pour une sous-requête interne:
Lors de l'utilisation de requêtes imbriquées, gardez ces points importants à l'esprit :
-
Résultat unique dans la sous-requête : assurez-vous que la requête imbriquée renvoie une seule colonne. Si elle est utilisée dans une comparaison, elle devrait idéalement renvoyer une seule valeur. Cela est crucial pour les opérateurs tels que
=
,>
,<
,>=
,<=
,<>
; -
Types de données : le type de données de la colonne renvoyée doit correspondre à la colonne avec laquelle vous la comparez, afin d'éviter des 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
IN
pour vérifier la présence de valeurs dans un sous-ensemble. Vous pouvez également 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 les valeurs dans un sous-ensemble ?
3. Pourquoi est-il important que le type de données de la colonne retournée par une sous-requête corresponde à la colonne à laquelle elle est comparée ?
Merci pour vos commentaires !