第七章 SQL高级子查询
SQL语句最强大的地方就是子查询。子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询。
基本子查询分为3类:
1. 通过in、any、all修饰的比较运算符引入的列表上操作的子查询;
2. 通过未修改的比较运算符引入且必须返回单个值的子查询;
3. 通过exists的存在测试的子查询。
子查询几乎可以放在任何SQL语句中,任何允许使用表达式的地方都可以使用子查询。
一、简单子查询
1. 在select语句使用子查询
where条件是另外一个查询语句时,外面的查询称为父查询,括号中嵌入的查询称为子查询。
SQL执行时,先执行子查询,后执行父查询。
注:将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个。
子查询还可以将多表的数据组合在一起,从而替换连接查询。
2. (1)update(更新)
(2) delete(删除)
子查询主要是放在delect语句的where条件中,作为删除的条件。
(3) insert(插入)语句中使用子查询
insertinto 表名 (字段列表)select 字段列表 from 表名
二、高级子查询
1. in和not in的子查询
使用 in 后的子查询返回值可以多于一个。
2. exists和not exists的子查询
3. all、any/some的子查询
all要求子查询必须返回且只能返回一个字段。
语法:
表达式或字段比较运算符 all(子查询)
表达式或字段比较运算符 any/some(子查询)