嵌套查询
•
一个
SELECT-FROM-WHERE
语句称为一个查询块
•
将一个查询块嵌套在另一个查询块的
WHERE
子句或
HAVING
短语的条件中的查询称为嵌套查询
(Nested Query)
SELECT Sname /*外层查询或父查询*/
FROM Student
WHERE Sno IN
(SELECTSno /*内层查询或子查询*/
FROMSC
WHERECno= '2’ );
•子查询的限制
①
不能使用
ORDERBY
子句
②
ORDERBY
子句只对最终查询结果排序
•层层嵌套方式反映了SQL语言的结构化
•
不相关子查询:子查询的查询条件不依赖于父查询。由里向外逐层处理。即每个子查询在上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。
相关子查询:子查询的查询条件依赖于父查询
①首先取外层查询表第一个元组,根据它与内层查询相关的属性值处理内层查询,若WHERE子句返回值为真,则取此元组放入结果表
②然后再取外层表的下一个元组
③重复这一过程,直至外层表全部检查完为止