什么是子查询语句?
指在一条select语句中,嵌入了另一条select语句,那么被嵌入的select语句就称之为子查询语句。
什么是子查询?
当一个查询是另一个查询的条件时,该查询称之为子查询。
在计算机中语言SELECT-SQL语句中,子查询就是嵌套查询下层的程序模块。
子查询分类
1、按照功能分
标量子查询:返回一个数据(一行一列)
列子查询:返回一列(一列多行)
行子查询:返回一行(一行多列)
表子查询:返回一张表(多行多列)
exists子查询:返回1或者0(类似布尔操作,mysql中没有布尔值)
2、按照位置分
where子查询:作为条件(标量子查询、列子查询、行子查询)
from子查询:作为数据源(表子查询)
标量子查询
标量子查询得到的结果只有一个值。
select * from 数据源 where 条件判断 运算符
(select * from 数据源 where 条件判断);
列子查询
主查询 where 条件 in(列子查询);
例:想获取已经有学生在班的所有班级名称
行子查询
字段元素:指一个字段对应的值。
行元素:指多个字段合起来为作为一个元素参与运算,把这种情况称之为行元素。
主查询 where 条件【(行元素)】 = (行子查询);
例:获取班级上年龄最大且身高最高的学生
获取班级最大年龄、获取班级最高身高,然后找到对应学生
表子查询
select 字段列表 from (表子查询) as 表别名【where等关键字均可】;
例:获取每个班上最高的学生
exists子查询
exists表示根据查询得到的结果进行判断:如果存在,那么返回1,否则返回0.
注意:where 1; 表示永远为真。
主查询 where exists(子查询);