目标:
1:掌握子查询的应用场景
2:掌握什么是子查询以及分类及其用法
一:子查询的应用场景
答:查询某个信息,一条SQL语句不能成功查询,需要多条SQL语句才可成功查询,这是就可以用到子查询(sql语句的嵌套)
二:什么是子查询以及分类及其用法
子查询:子查询就是将一条或多条sql语句嵌套进另外一条SQL语句内,嵌套语句是子查询语句,被嵌套语句(外部)是主查询语句
例如 select from classes where age > (select avg(new_age) from phone); 黄色区域的就是子查询语句,外面的就是主查询语句
子查询语句的分类:
【重点】1.标量子查询:子查询语句返回的是一个数据,但不局限于数据(一行一列)
【重点】2.列子查询:子查询语句返回的是一列多行的数据
3.行子查询:子查询语句返回的是一行多列的数据
4.表子查询:子查询语句返回的是多行多列的数据
注意事项:子查询是一条完整独立的SQL语句
子查询的用法(代码示例):
标量子查询语法:select from classeswhere age > (select avg(age) from classes) ;
表示查询 classes表内学生年龄age 大于学生平均年龄avg(age)的所有学生信息
——————————————————————————————————————————
普通语法:为了达到上面的结果,不使用子查询,需要写两条SQL语句才能实现
语句1:select avg(age) from classes; 先求出学生的平均年龄,假设是28
语句2:select from classes where age > 28; 在查询比平均年龄大的学生信息
————————————————————————————————————————————
快速代码体验:
列子查询语法:select from classes where classes.new_age in (select age from phone);
表示查询出classes表内的new_age字段信息等于 phone表的age字段的所有学生信息
——————————————————————————————
普通语法:
语句1:select age from phone 先查询出phone表内的所有age字段信息,返回值是一列多行,假设为1,2,5
语句2:select * from classes where classes.new_age in (1,2,5);
快速代码体验: