您的位置:首页 > 数据库

数据库学习笔记系列(8)——嵌套查询

2015-04-26 15:17 239 查看
在SQL语言中,一个select-from-where语句称为一个查询块。将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询。

上层的查询称为外层查询、父查询、主查询;

下层的查询称为内查询、子查询。

SQL语言允许多层嵌套查询,即一个子查询中还可以嵌套其它的子查询。

子查询的select语句中不能使用order by子句,order by 子句永远只能对最终查询结果排序,也就是只能适用于最外层的查询结果。

每个子查询在其上一级查询处理之前求解,子查询的结果用于建立其父查询的查找条件。

以层层嵌套的方式构造程序正是SQL(structured query language)中“structured”的含义所在。

1. in谓词的子查询

in谓词引起的子查询语句最为常见。其可以判断某个属性列值是否在子查询的结果中,当子查询的结果是一个集合的时候,使用in谓词较合适。

例:查询和孙浩一个学院的学生信息



我们发现in 谓词后面的括号中就是子句,子句中select出来的字段一定要是父查询where后面的字段。

2. 带有比较运算符的之查询

就是指父查询和子查询之间用比较运算符进行连接,当用户能确切知道子查询返回的是一个数值的时候,我们就可以用>, <, =, >=, <=, <>(!=)等比较运算符。

例:查询考分比孙浩高的学生信息



我们发现运算符后面的括号中就是子句,子句中select出来的字段一定要是父查询where后面的字段。

3. 带有any或all谓词的子查询

子查询返回单值时可以用比较运算符外,也可以使用any或all谓词,不过与此同时必须使用同时使用比较运算符。



例:查询其他系中比IS系某一个学生年龄小的学生信息



上面的命令中我们使用的是
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: