Maison  >  Article  >  base de données  >  Qu’est-ce que la sous-requête MySQL ? Exemple d'utilisation réelle de la sous-requête de la base de données Mysql

Qu’est-ce que la sous-requête MySQL ? Exemple d'utilisation réelle de la sous-requête de la base de données Mysql

php是最好的语言
php是最好的语言original
2018-07-24 15:57:171937parcourir

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

La sous-requête est également appelée requête interne. Par rapport à la requête interne, celle contenant la requête interne est appelée requête externe. Les sous-requêtes permettent d'imbriquer une requête dans une autre requête.

Caractéristiques des instructions de sous-requête de base de données MySQL : Partout où une expression peut être utilisée, une sous-requête peut être utilisée, à condition qu'elle renvoie une seule valeur ; la sous-requête dépend du nombre de valeurs renvoyées et la sous-requête a des valeurs externes ; dépendances, classification basée sur les différences dans les opérateurs de comparaison ; ceci est souvent utilisé dans les instructions SQL de requête de pagination.

1 : Caractéristiques des sous-requêtes :

  1. Les sous-requêtes peuvent être imbriquées dans les instructions select, insert, update, delete et autres

  2. Dans la plupart des cas, les sous-requêtes agissent comme des ensembles de résultats intermédiaires

  3. Les sous-requêtes peuvent être imbriquées et les restrictions d'imbrication varient en fonction de la mémoire et de la complexité de l'expression

  4. Partout où une expression peut être utilisée, une sous-requête peut être utilisée, à condition qu'elle renvoie une seule valeur

2 : Classification des sous-requêtes :

  1. Selon le nombre de valeurs de retour, elle peut être divisée en : sous-requête scalaire, sous-requête à valeurs multiples

  2. Selon la sous-requête, dépendance externe : sous-requête indépendante, sous-requête associée

  3. selon la différence des opérateurs de comparaison : IN, EXISTS, ANY, SOME, ALL et autres formes

Trois : Utilisation de sous-requêtes :

  1. Créez d'abord deux tableaux (table des étudiants et table des enseignants)

    # 创建学生表
    mysql> create table tb_student(
        -> stu_ID long,
        -> class varchar(5),
        -> score int
        -> );
    Query OK, 0 rows affected (0.23 sec)
    
    # 创建教师表
    mysql> create table tb_teacher(
        -> tea_ID long,
        -> class varchar(5),
        -> age int
        -> );
    Query OK, 0 rows affected (0.49 sec)
  2. Mettez quelques valeurs Insérez dans le tableau

    insert into tb_student values(1, "A", 20);
    
    insert into tb_student values(2, "A", 30);
    
    insert into tb_student values(3, "A", 70);
    
    insert into tb_student values(4, "B", 60);
    
    insert into tb_student values(5, "B", 70);
    
    insert into tb_student values(6, "B", 80);
    
    insert into tb_teacher values(1, "A", 25);
    
    insert into tb_teacher values(2, "B", 40);
  3. Une fois la préparation terminée, passez à l'exercice de sous-requête

  • Exemple 1 : Identifiants des enseignants dans chaque classe et leurs scores moyens en classe

    mysql> select tea_ID,
        -> (select avg(score) from tb_student as s where s.class = t.class group by class)
        -> as Avg from tb_teacher as t;
    +--------+---------+
    | tea_ID | Avg     |
    +--------+---------+
    | 1      | 40.0000 |
    | 2      | 70.0000 |
    +--------+---------+
    2 rows in set (0.00 sec)
  • Exemple 2 : Âge des enseignants dans chaque classe et nombre d'élèves qui réussissent dans la classe (60 est la ligne de réussite)

    mysql> select age,
        -> (select count(*) from tb_student as s where s.class = t.class && s.score >= 60 group by class)
        -> as Count from tb_teacher as t order by Count desc;
    +------+-------+
    | age  | Count |
    +------+-------+
    |   40 |     3 |
    |   25 |     1 |
    +------+-------+
    2 rows in set (0.00 sec)

Recommandations associées :

base de données d'instructions de requête de pagination MySQL query_MySQL

Instruction de sous-requête de limite MySQL_MySQL

Vidéo : Requête de données avancée - Clause Where - Vous emmène jouer avec MySQL en six jours

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