目录
本节继续介绍集合查询和嵌套查询的相关内容,也是数据查询的最后一个板块。
3.集合查询
SQL 作用在关系上的union,intersect和except 运算分别对应于数学集合论中的∪,∩和 −。
3.1并运算union
union会自动去除重复,union all保留重复
3.2交运算intersect
intersect all保留重复
3.3差运算except
值得注意的是,
SQL Server数据库中支持关键字:union、intersect和except
MySQL数据库只支持union关键字!
4.嵌套查询
4.1不相关子查询和相关子查询
不相关子查询:子查询的查询条件不依赖于父查询
◼ 由里向外逐层处理。
◼ 即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件
例如,
找出在2017年秋季和2018年春季同时开设的所有课程的集合
找出在2017年秋季学期开设但不在2018年春季学期开设的所有课程
相关子查询:子查询的查询条件依赖于父查询
➢ 首先取外层查询中表的第一个元组,根据它与内层查询相关的属性
值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果
表;
➢ 然后再取外层表的下一个元组;
➢ 重复这一过程,直至外层表全部检查完为止。
4.2集合的比较
4.3关系测试
空关系测试
4.4重复元组存在性测试
4.5 FROM子句中的子查询
4.6 WITH子句
WITH子句提供定义临时关系的方法。
f定义只对包含WITH子句的查询有效。
fWITH子句在SQL:1999中引入,目前有许多数据库系统多提供了支持,MySQL除外。
4.7 标量子查询