Oracle 内连接(inner join)outer join)、全连接(full join)

Oracle 内连接(inner join)outer join)、全连接(full join)

ID:40489661

大小:166.33 KB

页数:7页

时间:2019-08-03

Oracle 内连接(inner join)outer join)、全连接(full join)_第1页
Oracle 内连接(inner join)outer join)、全连接(full join)_第2页
Oracle 内连接(inner join)outer join)、全连接(full join)_第3页
Oracle 内连接(inner join)outer join)、全连接(full join)_第4页
Oracle 内连接(inner join)outer join)、全连接(full join)_第5页
资源描述:

《Oracle 内连接(inner join)outer join)、全连接(full join)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Student表Color表Oracle中的连接可分为,内连接(innerjoin)、外连接(outerjoin)、全连接(fulljoin),不光是Oracle,其他很多的数据库也都有这3种连接查询方式:内连接innerjoin/join也叫自连接,这是我们经常用到的查询方式,内连接查询只能查询出匹配的记录,匹配不上的记录时无法查询出来的,以下三种查询结果一样select*fromstudents,colorcwheres.stuname=c.stuname;select*fromstudentsinnerjoincolorc

2、ons.stuname=c.stuname;select*fromstudentsjoincolorcons.stuname=c.stuname;外连接outerjoin可进一步分为左外连接leftouterjoin和右外连接rightouterjoin,(简称左连接leftjoin,右连接rightjoin)。左外连接左连接就是以左边的表(leftjoin左边的表)为主表,即使有些记录关联不上,主表的信息也能全部查询出来,也就是左边的表数据全部展示,右边表的数据复合条件的展示,不符合条件的以空值代替,适合那种需要求出维度(比如

3、求出所有人员)的需求:select*fromstudentsleftjoincolorcons.stuname=c.stuname;等同于select*fromstudentsleftouterjoincolorcons.stuname=c.stuname;右外连接如果有需求要求在结果中展现所有的颜色信息,就可以用右连接:还有另一种写法,可以达到相同的外连接效果:比如左外连接等同于以下的语句:select*fromstudents,colorcwheres.stuname=c.stuname(+);同样右连接是这样的:selec

4、t*fromstudents,colorcwheres.stuname(+)=c.stuname;在(+)计算时,哪个带(+)哪个需要条件符合的,另一个全部的。即放左即右连接,放右即左连接。全连接fulljoin/fullouterjoin语法是语法为fulljoin...on...,全连接的查询结果是左外连接和右外连接查询结果的并集,即使一些记录关联不上,也能够把部分信息查询出来:产生M+N的结果集,列出两表全部的,不符合条件的,以空值代替。select*fromstudentsfulljoincolorcons.stunam

5、e=c.stuname;select*fromstudentsfulljoincolorcon1=1笛卡尔乘积crossjoin即不加任何条件,达到M*N的结果集。以下两种查询结果一样。select*fromstudentscrossjoincolorcselect*fromstudents,colorc注意:如果crossjoin加上whereons.stuname=c.stuname条件,会产生跟自连接一样的结果(crossjoin后加上on报错):加上条件,产生跟自连接一样的结果。select*fromstudentscr

6、ossjoincolorcwheres.stuname=c.stuname;自连接结果集的crossjoin连接结果总结ü所有的join连接,都可以加上类似wherea.id='1000'的条件,达到同样的效果。因为on不能做这种判断,只能是ü除了crossjoin不可以加on外,其它join连接都必须加上on关键字,后都可加where条件。ü虽然都可以加where条件,但是他们只在标准连接的结果集上查找where条件。比如左外连接的结果没有class的三班,所以如果加whereclass.id='C003'虽然在表中有,但在左

7、连接结果集中没有,所以查询后,是没有记录的。A表有100条数据,B表有80条数据,leftjoinon1=1,where1=1的结果是:应该是笛卡尔积A表有100条数据,B表有80条数据,leftjoinon1=2,where1=1的结果是:应该是A表的值测试:select*fromstudentsleftjoincolorcon1=1where1=1select*fromstudentsleftjoincolorcon1=2where1=1

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

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

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