欢迎来到天天文库
浏览记录
ID:36032426
大小:309.55 KB
页数:21页
时间:2019-05-01
《oracle公司内部数据库培训资料06子查询》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、子查询目标通过本章学习,您将可以:描述子查询可以解决的问题定义子查询。列句子查询的类型。书写单行子查询和多行字查询。使用子查询解决问题谁的工资比Abel高?谁的工资比Abel高?MainQuery:?Abel的工资是多少??Subquery子查询语法子查询(内查询)在主查询之前一次执行完成。子查询的结果被主查询使用(外查询)。SELECTselect_listFROMtableWHEREexproperator(SELECTselect_listFROMtable);SELECTlast_nameFROMemployeesWHEREsalary>(
2、SELECTsalaryFROMemployeesWHERElast_name='Abel');子查询11000注意事项子查询要包含在括号内。将子查询放在比较条件的右侧。除非进行Top-N分析,否则不要在子查询中使用ORDERBY子句。单行操作符对应单行子查询,多行操作符对应多行子查询。子查询类型主查询子查询返回ST_CLERK多行子查询ST_CLERKSA_MAN主查询子查询返回单行子查询单行子查询只返回一行。使用单行比较操作符。操作符=>>=<<=<>含义EqualtoGreaterthanGreaterthanorequaltoLesstha
3、nLessthanorequaltoNotequaltoSELECTlast_name,job_id,salaryFROMemployeesWHEREjob_id=(SELECTjob_idFROMemployeesWHEREemployee_id=141)ANDsalary>(SELECTsalaryFROMemployeesWHEREemployee_id=143);执行单行子查询ST_CLERK2600SELECTlast_name,job_id,salaryFROMemployeesWHEREsalary=(SELECTMIN(salary
4、)FROMemployees);在子查询中使用组函数2500子查询中的HAVING子句首先执行子查询。向主查询中的HAVING子句返回结果。SELECTdepartment_id,MIN(salary)FROMemployeesGROUPBYdepartment_idHAVINGMIN(salary)>(SELECTMIN(salary)FROMemployeesWHEREdepartment_id=50);2500SELECTemployee_id,last_nameFROMemployeesWHEREsalary=(SELECTMIN(sala
5、ry)FROMemployeesGROUPBYdepartment_id);非法使用子查询ERRORatline4:ORA-01427:single-rowsubqueryreturnsmorethanonerow多行子查询使用单行比较符子查询中的空值问题norowsselectedSELECTlast_name,job_idFROMemployeesWHEREjob_id=(SELECTjob_idFROMemployeesWHERElast_name='Haas');子查询不返回任何行多行子查询返回多行。使用多行比较操作符。操作符INANYA
6、LL含义等于列表中的任何一个和子查询返回的任意一个值比较和子查询返回的所有值比较在多行子查询中使用ANY操作符9000,6000,4200SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary'IT_PROG';…SELECTemployee_id,last_name,job_id,salaryFROMemployeesWHEREsalary7、(SELECTsalaryFROMemployeesWHEREjob_id='IT_PROG')ANDjob_id<>'IT_PROG';在多行子查询中使用ALL操作符9000,6000,4200子查询中的空值问题SELECTemp.last_nameFROMemployeesempWHEREemp.employee_idNOTIN(SELECTmgr.manager_idFROMemployeesmgr);norowsselected总结通过本章学习,您已经学会:在什么时候遇到什么问题应该使用子查询。在查询是基于未知的值时应使用子查询。SELEC8、Tselect_listFROMtableWHEREexproperator(SELECTselect_listFROMt
7、(SELECTsalaryFROMemployeesWHEREjob_id='IT_PROG')ANDjob_id<>'IT_PROG';在多行子查询中使用ALL操作符9000,6000,4200子查询中的空值问题SELECTemp.last_nameFROMemployeesempWHEREemp.employee_idNOTIN(SELECTmgr.manager_idFROMemployeesmgr);norowsselected总结通过本章学习,您已经学会:在什么时候遇到什么问题应该使用子查询。在查询是基于未知的值时应使用子查询。SELEC
8、Tselect_listFROMtableWHEREexproperator(SELECTselect_listFROMt
此文档下载收益归作者所有