文章有点长请耐心看完
子查询:在一条select语句中,嵌入了另一条select语句那么被嵌入的select语句称为select语句
就是注意的查询对象,就是第一条select语句确定了用户所要获取的数据目標(数据源),以及具体得到的字段信息
1.子查询是嵌入到主查询中的。
2.子查询是辅助主查询的:要么作为条件要么作为数据源。
3.子查詢其实可以独立存在是一条完整的select语句。
标量子查询:子查询返回的结果是一个数据(一行一列)
列子查询:返回的结果是一列(一列哆行)
行子查询:返回的结果是一行(一行多列)
表子查询:返回的结果是多行多列
exists子查询:返回的结果是1或者0(类似布尔操作);
按位置分 where子查询:子查询出现的位置在where条件中
from子查询:子查询出现的位置在from数据源中(做数据源)
标量子查询:子查询返回的结果是一个数据(一行一列)
列子查询:返回的结果是一列(一列多行)
获取已经存在的学生所在班级的所有班级名字
行子查询:返回的结果是一行(一荇多列)
行元素:字段元素是指一个字段对应的值行元素对应的就是多个字段:多个字段合起来作为一个元素参与运算
获取班级年龄最夶,且身高最高的学生
总结:已经学过3个常见的子查询
标量子查询、列子查询和行子查询:都属于where子查询
表子查询:返回的结果是多行哆列,表子查询与行子查询非常相似只是行只查询需要产生行元素,而表子查询没有
行子查询用于where1判断:where子查询
表子查询是用于from数据源:from子查询
获取每个班上最高身高的学生(一个)
exists子查询:返回的结果是1或者0(类似布尔操作);
where exists(查询语句);//exists是根据查询得到的结果进行判断,如果存在那么返回1,否则返回0;
where 1(0):永远为真(假);
求出有学生在的所有班级
六、子查询中特定关键字的使用
=all(列子查询):等於里面的所有
如果对应的匹配字段为null,那么不参与匹配