这篇文章主要介绍mysql数据库中子查询的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
mysql子查询是什么?
子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。子查询允许把一个查询嵌套在另一个查询当中。
mysql数据库子查询语句的特点:任何可使用表达式的地方,都可以使用子查询,只要他返回的是单个值;子查询按返回值的数量,子查询对外部依赖性,比较运算符的不同性进行分类;这在分页查询sql语句中经常用到。
子查询可被嵌套在 select,insert,update,delete 等语句中
大多数情况下子查询充当中间结果集角色
子查询可进行嵌套,且根据内存及表达式复杂程度不同,嵌套限制也不同
任何可使用表达式的地方,都可以使用子查询,只要他返回的是单个值
按返回值的数量可分为:标量子查询,多值子查询
按子查询对外部依赖性:独立子查询,相关子查询
按比较运算符的不同性:IN,EXISTS,ANY,SOME,ALL等多种形式
首先创建两个表(学生表和教师表)
# 创建学生表
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)
将一些值插入到表中
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);
准备工作完毕,接下来进行子查询练习
例一:各班教师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」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。