文章目录
1,子查询的陈述
概念: 出现在其他语句内部的select语句,称为子查询或内查询
内部嵌套其他select语句的查询,称为外查询或主查询
分类:
- 按子查询出现的位置
1;select后面(仅支持标量子查询)
2;from后面:
(支持表子查询)
3;where或having后面:★
(支持标量子查询,列子查询,行子查语)
4;exinta后面
(支持相关子查询,表子查询)
- 按结果集的行列数不同:
标量子查询(结果集只有一行一列)(单行子查询)
列子查询(结果集只有一列多行)(多行子查询)
行子查询(结果集有多行多列)
表子查询(结果集一般为多行多列)
1.1 子查询出现的位置——where或having后面
支持标量子查询,列子查询,行子查语(只要了解就好)
特点:
1:子查询在小括号内
:2:子查询一般放在条件的右侧
3:标量子查询,一般搭配着单行缲作符使用,>,<>=,<=,<>,=
列子查询,一般措配着多行操作符使用TN、ANY/SOME、 ALL,
4:子查询的执行优先于主查询执行
——————————————————————
1:演示单行子查询:创建一张员工表,并且查询出比小王薪水高的员工工资和姓名
staff表
第一步先解决查找出小王薪水
SELECT salary FROM staff WHERE name=“小王”;
上述查询语句就是单行子查询其结果集只有一行一列
第二步:在解决查询出比小王薪水高的员工工资和姓名
SELECT name,salary FROM staff WHERE salary>(SELECT salary FROM staff WHERE name=“小王”);
2:演示多行子查询:查询staff表中,员工薪水比部门全部平均工资要高的姓名和薪水
部门表
第一步:查询每个部门的平均薪水
SELECT avgsalary FROM ministry;
上述查询语句就是多行子查询其结果集就是多行单列
第二步:查询staff表中,员工薪水比部门全部平均工资要高的姓名和薪水
SELECT salary,name FROM staff WHERE salary>ALL(SELECT avgsalary FROM ministry);
————————————————————————————