mysql数据库中子查询的示例分析-创新互联

这篇文章主要介绍mysql数据库中子查询的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

为丰南等地区用户提供了全套网页设计制作服务,及丰南网站建设行业解决方案。主营业务为成都网站建设、网站制作、丰南网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

mysql子查询是什么?

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

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

一:子查询的特点:
  1. 子查询可被嵌套在 select,insert,update,delete 等语句中

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

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

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

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

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

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

三:子查询的使用:
  1. 首先创建两个表(学生表和教师表)

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

  • 例一:各班教师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)
  • 例二:各班级教师年龄及其班级及格人数(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数据库中子查询的示例分析-创新互联
浏览地址:http://myzitong.com/article/ppojg.html