ホームページ  >  記事  >  データベース  >  mysqlサブクエリとは何ですか? Mysqlデータベースサブクエリの実際の使用例

mysqlサブクエリとは何ですか? Mysqlデータベースサブクエリの実際の使用例

php是最好的语言
php是最好的语言オリジナル
2018-07-24 15:57:171931ブラウズ

mysqlサブクエリとは何ですか?

サブクエリは、内部クエリと比較して、内部クエリを含むものを外部クエリと呼びます。サブクエリを使用すると、1 つのクエリを別のクエリ内にネストできます。

mysql データベース サブクエリ ステートメントの特徴: サブクエリは、単一の値を返す限り、式が使用できる場所であればどこでも使用できます。サブクエリは戻り値の数、サブクエリの外部依存関係、比較演算子に基づいています。ページング クエリ SQL ステートメントでよく使用されます。

1: サブクエリの特徴:

  1. サブクエリは、select、insert、update、delete などのステートメントでネストできます

  2. ほとんどの場合、サブクエリは中間結果セットとして機能します

  3. サブクエリのネストは可能です、ネストの制限はメモリと式の複雑さによって異なります

  4. 式が使用できる場所であればどこでも、単一の値を返す限りサブクエリを使用できます

II : サブクエリの分類:

  1. 可能戻り値の数に応じて、スカラーサブクエリ、多値サブクエリ

  2. に分割されます: サブクエリの外部依存関係: 独立サブクエリ、相関サブクエリ

  3. 比較演算子の違いに応じて: IN、EXISTS、ANY 、SOME、ALL、その他の形式

3: サブクエリの使用:

  1. まず、2つのテーブル(学生テーブルと教師テーブル)を作成します

    # 创建学生表
    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. テーブルにいくつかの値を挿入します

    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. 準備が整ったので、サブクエリの練習をしてみましょう

  • 例1:各クラスの教師IDとクラスの平均点

    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)
  • 例2:各クラスの教師の年齢と人数クラスに合格した学生 (60 が合格ライン)

    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)

関連する推奨事項:

mysql ページング クエリ ステートメント データベース クエリ_MySQL

Mysql 制限サブクエリ ステートメント_MySQL

ビデオ :高度なデータ クエリ - where 句- 6 日間で MySQL を遊んでみましょう

以上がmysqlサブクエリとは何ですか? Mysqlデータベースサブクエリの実際の使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。