![ebf7924f2255ad82c7f1a44c34730131.png](https://i-blog.csdnimg.cn/blog_migrate/9cf382256ac5aa9882149bdaa3961fef.jpeg)
1. 什么是子查询
(1) 什么是子查询?
子查询是一个SELECT语句,他是嵌在另一个SELECT语句中的子句。
(2) 子查询执行的顺序是什么?
子查询(内查询)在主查询之前执行一次;子查询的结果被用于主查询(外查询)
可以将子查询放在许多的SQL子句中,包括:WHERE子句,HAVING子句,FROM子句
2. 使用子查询
(1) 使用子查询的原则是什么?
使用子查询的原则:
-子查询放在圆括号中;
-将子查询放在比较条件的右边;
-在单行子查询中用单行运算符,在多行子查询中用多行运算符。
(2) 有哪些类型的子查询?
单行子查询:子查询语句只返回一行的查询
多行子查询:子查询语句返回多行的查询
(3) 写出谁的薪水比Abel高。
select * from employees where salary>(select salary from employees where last_name='Abel');
3. 单行子查询
(1) 单行子查询的特点是什么?
仅返回一行;使用单行比较符。
(2) 主查询对子查询结果的单行比较运算符有哪些?
=
>
>=
<
<=
<>
实例:显示那些JOB ID与雇员141相同的雇员的名字与JOB ID
SQL> select last_name,job_id from employees where job_id=(select job_id from employees where employee_id=141);
实例:显示job_id与雇员141相同,并且薪水高于雇员143的那些雇员。
select * from employees em where em.job_id=(select job_id from employees where employee_id=141) and em.salary>(select salary from employees where employee_id=143);
在子查询中也可使用组函数
实例:显示所有其薪水等于最低薪水的雇员的last_name、job_id和salary。
SQL> select last_name,job_id,salary from em