oracle 复杂查询语句的使用

oracle 复杂查询语句的使用

ID:19274644

大小:58.00 KB

页数:9页

时间:2018-09-27

oracle 复杂查询语句的使用_第1页
oracle 复杂查询语句的使用_第2页
oracle 复杂查询语句的使用_第3页
oracle 复杂查询语句的使用_第4页
oracle 复杂查询语句的使用_第5页
资源描述:

《oracle 复杂查询语句的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.复杂查询语句的使用在关系数据库中,select语句是使用最频繁的语句。它的处理复杂程度可依据业务的要求的不同而不同。它是程序员和管理员必需的语句。前面已经进行过介绍,但下面从较为复杂的程度来介绍它的使用情况。§7.1复杂查询语句的使用使用SELECT语句和子查询(SUBQUERY)可以从一个或多个表、视图、实体视图中返回数据。§7.1.1相关子查询可以将子查询(前面提到的assubquery)或In或exists当成where的一个条件的一部分,这样的查询称作子查询。lwhere中可以包含一个select语句子查询;lwhere中可以包含IN,EXISTS语句;l最多可

2、嵌套16层;l层数过多会影响性能。例:比如一个查询是否有专家既以研究所的名义申请基金项目又以大学系为单位申请项目(按规定只能以一个单位来申请):SQL>selectname,per_id,dept_namefromuniv_subjectsWhereper_idin(selectper_idfromcolle_subjects);§7.1.2外连接招生中,如果所有学生的信息放在students表中,而部分有特长的学生在另一个表student_skill中同样有该学生信息。现在要全部列出所有学生,如果某个学生在表student_skill中有其特长信息,就显示特长内容,如果某

3、个学生没有特长(在表student_skill中无其特长信息)就显示特长为空:SQL>selecta.st_id,name,age,skillfromstudentsa,student_skillbWherea.st_id=b.st_id(+)Orderbya.name;Students结构为:St_idvarchar(20),Namevarchar2(10),Agenumber(2),Tot_scorenumber(3),......Student_skill结构为:St_idvarchar(20),Skillvarchar2(20),......Students的记录,

4、Student_skill的记录少。上面的“+”跟在记录少的表后面,它表示当没有与a.st_id匹配时就为b.st_id增加一空行。St_idnametot_scoreskill---------------------------------------------------1111aaaa600足球2222bbbb590篮球3333cccc6204444dddd610跳高......§7.1.3自我连接自我连接是在同一个表或视图内进行条件连接。下面语句返回的是每个雇员的名字及该雇员的经理的名字:SELECTe1.ename

5、

6、’worksfor’

7、

8、e2.ename"

9、EmployeesandtheirManagers"FROMempe1,empe2WHEREe1.mgr=e2.empno;EmployeesandtheirManagers-------------------------------BLAKEworksforKINGCLARKworksforKINGJONESworksforKINGFORDworksforJONESSMITHworksforFORDALLENworksforBLAKEWARDworksforBLAKEMARTINworksforBLAKESCOTTworksforJONESTURNERworksforB

10、LAKEADAMSworksforSCOTTJAMESworksforBLAKEMILLERworksforCLARK连接条件是e1.mgr=e2.empno§7.1.4UNION,INTERSECT及MINUS有时需要从多个表中组合具有一种相似类型的信息。Union可以完成将两个以上的表的相类似的查询结果合并在一起,并且相同的只取其一;如果unionall则表示返回所有行(不管是否重复)。Intersect返回在两个表中都有相同内容的信息。Minus则返回只在一个表中出现的信息。1.语法:select...union[all]select...select...inter

11、sectselect...select...minusselect...例:sql>selectsum(balance)intolf_returnfrom(selectsum(nvl(tran_val,0)*decode(db_cr_flag,'1',1,'0',-1,0))balancefromper_fix_detwhereacc_no=as_acc_nounionallselectsum(nvl(tran_val,0)*decode(db_cr_flag,'1',1,'0',-1,0))balancefrom

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。