第4节 子查询
目 标
- 描述子查询可以解决的问题。
- 定义子查询。
- 列出子查询的类型。
- 书写单行子查询和多行子查询。
子查询
概念:
- 出现在其他语句内部的select语句,称为子查询或内查询
- 内部嵌套其他select语句的查询,称为外查询或主查询
示例:
select first_name from employees where
department_id in(
select department_id from departments
where location_id=1700
)
注意事项
- 子查询要包含在括号内。
- 将子查询放在比较条件的右侧。
- 单行操作符对应单行子查询,多行操作符对应多行子查询。
子查询类型
单行子查询
多行子查询
单行子查询
- 只返回一行。
- 使用单行比较操作符。
子查询语法
- 子查询 (内查询) 在主查询之前一次执行完成。
- 子查询的结果被主查询(外查询)使用 。
使用子查询解决问题
谁的工资比 Abel 高?
子查询
非法使用子查询
多行子查询使用单行比较符
子查询中的空值问题
子查询不返回任何行
多行子查询
- 返回多行。
- 使用多行比较操作符。
在多行子查询中使用 ANY 操作符
题目:返回其它部门中比job_id为‘IT_PROG’部门任一工资低的员工的员工号、姓名、job_id 以及salary
在多行子查询中使用 ALL 操作符
题目:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工的员工号、姓名、job_id 以及salary
子查询中的空值问题
总 结
- 如何使用子查询。
- 在查询时基于未知的值时,应使用子查询。