Requêtes Imbriquées
L'administration de l'école est satisfaite de nos réalisations récentes et souhaite aller de l'avant.
Alors qu'ils entament leurs vacances d'été, nous avons l'opportunité d'explorer de nouvelles méthodes et d'améliorer nos compétences en SQL.
Notre attention portera 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 facilitent 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.
Examinons un exemple issu de notre base de données d'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.
Observons la structure de la nouvelle table pour comprendre son rôle dans notre 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érons un exemple où l’on utilise des requêtes imbriquées pour extraire les employés travaillant dans des départements dont le budget est inférieur ou égal à 500 000 $ :
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 par la requête interne.
Décomposons cette requête en deux requêtes distinctes afin de comprendre son fonctionnement. Tout d'abord, récupérons les noms des départements dont le budget est inférieur ou égal à 500 000 $ (notre requête interne) :
123SELECT name FROM department WHERE budget <= 500000
En tenant compte du résultat obtenu, écrivons maintenant la seconde requête pour récupérer les informations concernant 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 présents dans la table issue de la requête interne ; -
Le résultat souhaité est obtenu.
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 la présence de 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
Can you explain more about how nested queries work in SQL?
What are some common mistakes to avoid when using nested queries?
Can you show an example using a different operator instead of IN?
Génial!
Completion taux amélioré à 4
Requêtes Imbriquées
Glissez pour afficher le menu
L'administration de l'école est satisfaite de nos réalisations récentes et souhaite aller de l'avant.
Alors qu'ils entament leurs vacances d'été, nous avons l'opportunité d'explorer de nouvelles méthodes et d'améliorer nos compétences en SQL.
Notre attention portera 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 facilitent 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.
Examinons un exemple issu de notre base de données d'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.
Observons la structure de la nouvelle table pour comprendre son rôle dans notre 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érons un exemple où l’on utilise des requêtes imbriquées pour extraire les employés travaillant dans des départements dont le budget est inférieur ou égal à 500 000 $ :
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 par la requête interne.
Décomposons cette requête en deux requêtes distinctes afin de comprendre son fonctionnement. Tout d'abord, récupérons les noms des départements dont le budget est inférieur ou égal à 500 000 $ (notre requête interne) :
123SELECT name FROM department WHERE budget <= 500000
En tenant compte du résultat obtenu, écrivons maintenant la seconde requête pour récupérer les informations concernant 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 présents dans la table issue de la requête interne ; -
Le résultat souhaité est obtenu.
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 la présence de 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 !