子查询分为:
单行子查询:对外部SQL语句要么不返回结果,要么只返回一条。
多行子查询:对外部的SQL语句返回一行或多行
多列子查询:向外部的sql返回多列
关联子查询:引用外部的SQL语句中的一列或多列
嵌套子查询:位于另一个子查询中。
一:单行子查询
可能碰到的错误:
1.单行子查询只能返回一行
如果返回多行会出现如下错误:
ORA-01427:single-row subquery returns more than one row.
2.子查询中不能包含order by字句
二多行子查询
可以使用in/any/all操作符。
三:关联子查询
1.使用exists和not exists
exists:用于检查子查询返回行的存在性。
2.exists和not exists与in和not in的区别
in操作符用来检查特定的值是否存在于值列表中
exists只是检查行的存在性,不检查实际值。
通常情况下 exists比in的性能高。
当值列表包含空值,not exists返回true,in返回false
四:嵌套子查询