Maison  >  Article  >  base de données  >  Introduction détaillée à la sous-requête MySQL

Introduction détaillée à la sous-requête MySQL

零下一度
零下一度original
2017-07-23 11:22:152723parcourir

MySQL est un système de gestion de bases de données relationnelles développé par la société suédoise MySQLAB et est actuellement un produit d'Oracle. MySQL est l'un des systèmes de gestion de bases de données relationnelles les plus populaires. En termes d'applications Web, MySQL est le meilleur logiciel d'application RDBMS (Relational Database Management System).

Introduction détaillée à la sous-requête MySQL

MySQL prend en charge la fonction de sous-requête depuis la version 4.1. Avant cette version, vous pouvez utiliser join pour écrire une requête de table à la place, mais il n'est pas recommandé d'écrire de cette façon. est assez gênant. Voici plusieurs manières courantes d'écrire des sous-requêtes MySQL :

1.select*fromxxxwherecol=[any|all](select*fromxxxx);

Cette syntaxe peut être divisée en ajout de mots-clés et non Ajouter des mots-clés,

Lorsqu'aucun mot-clé n'est ajouté,

, l'instruction de sous-requête renvoie une valeur discrète

(notez qu'il s'agit d'une valeur), l'instruction de requête utilisera le résultat de l'instruction de sous-requête comme condition de votre propre clause Where à interroger. Cette syntaxe peut ajouter des mots-clés tels que any, all, exist avant l'instruction de sous-requête. À ce stade, l'instruction de sous-requête renvoie un ensemble de valeurs discrètes. n'importe quel moyen, requête

L'instruction utilise la valeur renvoyée par la sous-requête comme plage, et les requêtes dans cette plage de valeurs, qui sont similaires au mot-clé in, la clé all n'est pas facile à comprendre, et cela signifie que tous les matchs de.

2.select*fromxxxwherecolin(select*fromxxxx);

La syntaxe est assez claire, c'est-à-dire que la clause Where de l'instruction de requête utilise le résultat de l'instruction de sous-requête comme portée, qui est le même que ce qui précède. Une similitude grammaticale avec any.

 3.selectrow(value1,value2.....)=[any](selectcol1,col2..);

 L'essence de l'exécution de cette instruction est :

Le résultat obtenu à partir de l'exécution de l'instruction de sous-requête correspond à l'ensemble de résultats de la requête

Si une correspondance peut être trouvée, elle renvoie vrai, sinon elle renvoie faux, et les ensembles de résultats des deux côtés sont un. ensemble de valeurs discrètes.

4.select....wherecol=[not]exists(select...);

Cette instruction est boiteuse, et son exécution est comme ceci : lorsque la sous-requête est exécutée. L'instruction ne sera exécutée que lorsque l'opération renvoie un résultat,

Et l'instruction sera exécutée autant de fois qu'il y a de résultats.

 5.select....from(select....)asnamewhere......

 Cette syntaxe est rarement utilisée dans la vie quotidienne et n'est pas facile à comprendre. En fait, c'est le cas.

est construit à partir des résultats de l'exécution d'une sous-requête (cette table est une table de données dérivée, une table virtuelle), qui est utilisée comme table principale de la phrase. ,

Cette syntaxe est très puissante et est souvent utilisée dans certaines requêtes complexes.

Conclusion de l'éditeur :

Bien que la sous-requête soit très pratique, elle présente de nombreux défauts, et les expériences ont prouvé que son efficacité d'exécution est assez insatisfaisante. Il n'est toujours pas recommandé d'utiliser des sous-requêtes.

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