目标:
1、了解子查询
2、了解子查询能解决哪些问题
3、了解子查询类型
4、学会使用单行子查询和多行子查询
Agenda
一、子查询:类型、语法和原则
二、单行子查询
---子查询中的组函数
---HAVING子句中的子查询中
三、多行子查询
---学会使用ALL或者ANY操作
四、了解子查询中的NULL值
一、子查询:类型、语法和原则
子查询语法
inner query ---> 可以使用在WHERE子句、FROM子句和HAVING子句中
内部查询先执行,结果被主查询使用
示例:查询比“Abel”薪资高的员工
子查询原则
1、用括号将子查询括起来
2、将子查询放在右边,提高阅读性
3、学会使用子查询的单行操作符和多行操作符
Single-row subquery
Multiple-row subquery
单行子查询
1、返回一行
2、可以使用单行操作符
示例:
二、单行子查询
子查询中使用组函数
示例:列出公司最低薪资员工
在HAVING子句中使用子查询
1、首先执行子查询
2、子查询结果返回到主查询
示例:列出各部门最低薪资,且大于部门编号为50的部门
示例:列出不同岗位中平均薪资中的最低薪资岗位
注意不能使用单行操作符操作多行记录
示例:
示例:修改上面的错误
子查询一般会返回三个结果,一个是单行,一个是多行,另一个就是空,但是如果子查询返回的结果是NULL值的话,那么整个的查询返回的结果都是NULL
示例1:
示例2:
显然,当NULL参与算术运算的时候,整个式子都是NULL
三、多行子查询
1、返回多行记录
2、使用多行操作符
如果最后返回的结果是“no rows selected”,最终会是FALSE
如果最后返回的结果是“no rows selected”,最终会是TURE
“< ANY是小于子查询到的最大值”
“> ANY是大于子查询到的最小值”
“= ANY是相当于IN”
示例:(ANY)把薪资是小于程序员最大值的员工列出来,且不是程序员岗位的
“< ALL是小于子查询到的最小值”
“> ALL是大于子查询到的最大值”
示例:(ALL)
四、了解子查询中的NULL值
示例:列出不是经理的员工
“not in”在返回的结果有NULL值的情况下,查询的结果是NULL,相当于“<> ALL”
而“in”不同,“in”相当于“= ANY”
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30197839/viewspace-1975602/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30197839/viewspace-1975602/