mysql子查询是什么?mysql数据库子查询实际使用示例


本文摘自PHP中文网,作者php是最好的语言,侵删。

mysql子查询是什么?

子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。子查询允许把一个查询嵌套在另一个查询当中。

mysql数据库子查询语句的特点:任何可使用表达式的地方,都可以使用子查询,只要他返回的是单个值;子查询按返回值的数量,子查询对外部依赖性,比较运算符的不同性进行分类;这在分页查询sql语句中经常用到。

一:子查询的特点:

  1. 子查询可被嵌套在 select,insert,update,delete 等语句中

  2. 大多数情况下子查询充当中间结果集角色

  3. 子查询可进行嵌套,且根据内存及表达式复杂程度不同,嵌套限制也不同

  4. 任何可使用表达式的地方,都可以使用子查询,只要他返回的是单个值

二:子查询的分类:

  1. 按返回值的数量可分为:标量子查询,多值子查询

  2. 按子查询对外部依赖性:独立子查询,相关子查询

  3. 按比较运算符的不同性:IN,EXISTS,ANY,SOME,ALL等多种形式

三:子查询的使用:

  1. 首先创建两个表(学生表和教师表)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    # 创建学生表

    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. 将一些值插入到表中

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    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. 准备工作完毕,接下来进行子查询练习

  • 例一:各班教师ID及其班级平均分数

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    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)

  • 例二:各班级教师年龄及其班级及格人数(60为及格线)

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    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 limit子查询语句_MySQL

视频:高级数据查询 - where子句-六天带你玩转MySQL

以上就是mysql子查询是什么?mysql数据库子查询实际使用示例的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql子查询是什么?mysql数据库子查询实际使用示例

更多相关阅读请进入《mysql数据库子查询语句》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...