recherche
Maisonbase de donnéestutoriel mysqlComprendre les sous-requêtes SQL : un guide complet avec des exemples

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);
  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);
  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);
  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);

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);
  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);
  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)
   );
  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);

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!

Déclaration
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
Comment pouvez-vous identifier les requêtes lentes dans MySQL?Comment pouvez-vous identifier les requêtes lentes dans MySQL?Apr 26, 2025 am 12:15 AM

L'identification des requêtes lentes dans MySQL peut être réalisée en activant les journaux de requête lents et en définissant des seuils. 1. Activer les journaux de requête lents et définir les seuils. 2. Afficher et analyser les fichiers journaux de requête lente et utiliser des outils tels que MySqlDumpSlow ou Pt-Query-digest pour une analyse approfondie. 3. Optimisation des requêtes lentes peut être réalisée grâce à l'optimisation de l'index, à la réécriture de la requête et à l'évitement de l'utilisation de Select *.

Comment pouvez-vous surveiller la santé et les performances de MySQL Server?Comment pouvez-vous surveiller la santé et les performances de MySQL Server?Apr 26, 2025 am 12:15 AM

Pour surveiller la santé et les performances des serveurs MySQL, vous devez prêter attention à la santé du système, aux mesures de performance et à l'exécution des requêtes. 1) Surveiller la santé du système: utilisez les commandes TOP, HTOP ou ShowGlobalStatus pour afficher les activités du CPU, de la mémoire, des E / S de disque et du réseau. 2) Suivre les indicateurs de performance: surveiller les indicateurs clés tels que le numéro de requête par seconde, le temps de requête moyen et le taux de réussite du cache. 3) Assurer l'optimisation de l'exécution des requêtes: activer les journaux de requête lents, enregistrer et optimiser les requêtes dont le temps d'exécution dépasse le seuil défini.

Comparez et contrastez MySQL et Mariadb.Comparez et contrastez MySQL et Mariadb.Apr 26, 2025 am 12:08 AM

La principale différence entre MySQL et MARIADB est les performances, les fonctionnalités et la licence: 1. MySQL est développé par Oracle, et MariADB est sa fourche. 2. MariaDB peut mieux fonctionner dans des environnements à haute charge. 3.MariaDB fournit plus de moteurs et de fonctions de stockage. 4.MySQL adopte une double licence et MariaDB est entièrement open source. L'infrastructure existante, les exigences de performance, les exigences fonctionnelles et les coûts de licence doivent être pris en compte lors du choix.

Comment les licences de MySQL se comparent-elles aux autres systèmes de base de données?Comment les licences de MySQL se comparent-elles aux autres systèmes de base de données?Apr 25, 2025 am 12:26 AM

MySQL utilise une licence GPL. 1) La licence GPL permet l'utilisation, la modification et la distribution gratuites de MySQL, mais la distribution modifiée doit se conformer à GPL. 2) Les licences commerciales peuvent éviter les modifications publiques et conviennent aux applications commerciales qui nécessitent de la confidentialité.

Quand choisissez-vous InNODB sur Myisam, et vice versa?Quand choisissez-vous InNODB sur Myisam, et vice versa?Apr 25, 2025 am 12:22 AM

Les situations lors du choix d'innodb au lieu de Myisam incluent: 1) le support de transaction, 2) un environnement de concurrence élevé, 3) une cohérence élevée des données; Inversement, la situation où le choix de Myisam comprend: 1) la lecture principalement des opérations, 2) Aucun support de transaction n'est requis. INNODB convient aux applications qui nécessitent une cohérence élevée des données et un traitement des transactions, telles que les plates-formes de commerce électronique, tandis que Myisam convient aux applications en lecture et sans transaction telles que les systèmes de blog.

Expliquez le but des clés étrangères dans MySQL.Expliquez le but des clés étrangères dans MySQL.Apr 25, 2025 am 12:17 AM

Dans MySQL, la fonction des clés étrangères est d'établir la relation entre les tables et d'assurer la cohérence et l'intégrité des données. Les clés étrangères maintiennent l'efficacité des données grâce à des contrôles d'intégrité de référence et aux opérations en cascade. Faites attention à l'optimisation des performances et évitez les erreurs courantes lorsque vous les utilisez.

Quels sont les différents types d'index dans MySQL?Quels sont les différents types d'index dans MySQL?Apr 25, 2025 am 12:12 AM

Il existe quatre types d'index principaux dans l'index MySQL: B-Tree, index de hachage, index complet et index spatial. 1.B L'indice de tree est adapté à la requête, au tri et au regroupement des plages, et convient à la création sur la colonne du nom du tableau des employés. 2. L'indice de hachage convient aux requêtes équivalentes et convient à la création sur la colonne ID de la table Hash_Table du moteur de stockage de mémoire. 3. L'index de texte complet est utilisé pour la recherche de texte, adapté à la création sur la colonne de contenu de la table des articles. 4. L'indice spatial est utilisé pour la requête géospatiale, adaptée à la création sur le tableau des colonnes GEOM des emplacements.

Comment créez-vous un index dans MySQL?Comment créez-vous un index dans MySQL?Apr 25, 2025 am 12:06 AM

TOCREATEANIDEXINMYSQL, USETHECREATEIDEXSTAMENT.1) ForasingLeColumn, utilisez "CreateIndexidx_lastNameOnPloyes (LastName);" 2) ForacompositeIndex, utilisez "CreateIndexidx_NameonEmployes (LastName, FirstName);" 3)

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel