Maison > base de données > tutoriel mysql > Comprendre les sous-requêtes SQL : un guide complet avec des exemples

Comprendre les sous-requêtes SQL : un guide complet avec des exemples

Linda Hamilton
Libérer: 2024-12-27 01:18:12
original
337 Les gens l'ont consulté

Understanding SQL Subqueries: A Complete Guide with Examples

Qu'est-ce qu'une sous-requête en SQL ?

Une sous-requête, également connue sous le nom de requête interne ou requête imbriquée, est une requête dans une autre requête SQL. Il est placé entre parenthèses et est exécuté en premier pour fournir des résultats que la requête externe utilise pour un traitement ultérieur.


Types de sous-requêtes

  1. Sous-requête sur une seule ligne
    • Renvoie une ligne en conséquence.
    • Couramment utilisé avec des opérateurs de comparaison tels que =, <, >.

Exemple :

Trouvez le nom de l'employé avec le salaire le plus élevé :

   SELECT Name
   FROM Employees
   WHERE Salary = (SELECT MAX(Salary) FROM Employees);
Copier après la connexion
Copier après la connexion
  1. Sous-requête multi-lignes
    • Renvoie plusieurs lignes en conséquence.
    • Utilisé avec des opérateurs comme IN, ANY, ALL.

Exemple :

Trouver des employés qui travaillent dans des départements comptant plus de 5 membres :

   SELECT Name
   FROM Employees
   WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Members > 5);
Copier après la connexion
Copier après la connexion
  1. Sous-requête corrélée
    • Colonnes de références de la requête externe.
    • Exécuté à plusieurs reprises pour chaque ligne de la requête externe.

Exemple :

Trouver des employés gagnant plus que le salaire moyen de leur service :

   SELECT Name, Salary
   FROM Employees E
   WHERE Salary > (SELECT AVG(Salary) FROM Employees WHERE DepartmentID = E.DepartmentID);
Copier après la connexion
Copier après la connexion
  1. Sous-requête imbriquée
    • Contient une autre sous-requête.

Exemple :

Trouvez les départements où le salaire moyen des employés dépasse 50 000 $ :

   SELECT Name
   FROM Employees
   WHERE Salary = (SELECT MAX(Salary) FROM Employees);
Copier après la connexion
Copier après la connexion

Cas d'utilisation des sous-requêtes

  1. Filtrage des données : Utilisez des sous-requêtes pour filtrer les lignes en fonction de critères spécifiques.
   SELECT Name
   FROM Employees
   WHERE DepartmentID IN (SELECT DepartmentID FROM Departments WHERE Members > 5);
Copier après la connexion
Copier après la connexion
  1. Comparaison des données : Comparez les données entre les tables à l'aide de sous-requêtes.
   SELECT Name, Salary
   FROM Employees E
   WHERE Salary > (SELECT AVG(Salary) FROM Employees WHERE DepartmentID = E.DepartmentID);
Copier après la connexion
Copier après la connexion
  1. Agrégation de données : Effectuez des agrégations avancées en imbriquant des requêtes.
   SELECT DepartmentName
   FROM Departments
   WHERE DepartmentID IN (
       SELECT DepartmentID
       FROM Employees
       WHERE Salary > (SELECT AVG(Salary) FROM Employees)
   );
Copier après la connexion
  1. Mises à jour dynamiques : Mettez à jour ou supprimez des lignes de manière dynamique en fonction d'une sous-requête.
   SELECT * FROM Products WHERE Price > (SELECT AVG(Price) FROM Products);
Copier après la connexion

Avantages des sous-requêtes

  1. Modularité : divisez les requêtes complexes en parties plus petites et gérables.
  2. Lisibilité : Rend la logique de requête plus claire dans de nombreux cas.
  3. Flexibilité : peut être utilisé dans les clauses SELECT, WHERE, FROM et HAVING.

Limitations

  1. Performances : les sous-requêtes, en particulier celles corrélées, peuvent être plus lentes car elles s'exécutent plusieurs fois.
  2. Complexité : les sous-requêtes profondément imbriquées peuvent devenir difficiles à lire et à déboguer.
  3. Défis d'optimisation : Parfois, les mêmes résultats peuvent être obtenus plus efficacement avec des jointures.

Conclusion

Les sous-requêtes sont un outil puissant en SQL pour décomposer une logique complexe en parties gérables, permettant une analyse dynamique des données et facilitant la manipulation des données. Cependant, pour optimiser les performances des requêtes, il est essentiel de comprendre quand utiliser des sous-requêtes par rapport à des alternatives telles que les jointures.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal