日期:2014-05-16 浏览次数:20422 次
oracle中的连接可分为,内连接(inner join)、外连接(outer join)、全连接(full join),不光是Oracle,其他很多的数据库也都有这3种连接查询方式
部门表dept
?
deptid | deptName |
1 | 开发部 |
2 | 财务部 |
3 | 人事部 |
?
职工表employee
?
eid | deptid | eName |
1 | 1 | 刘德华 |
2 | 1 | 张惠妹 |
3 | 5 | 张学友 |
?
比如现在有需求1,要进行部门表和职工表的关联查询,并要查询出所有的部门信息,这时候,下面的左连接查询就能够查询出想要的结果,左连接就是以left join前面的表为主表,即使有些记录关联不上,主表的信息能够查询出来的
select * from dept left outer join employee on dept.deptid=employee.deptid
?
比如现在有需求2,要进行部门表和职工表的关联查询,并要查询出所有的职工信息,这时候,下面的右连接查询就能够查询出想要的结果,右连接就是以right join后面的表为主表,即使有些记录关联不上,主表的信息能够查询出来
select * from dept?right outer join employee on dept.deptid=employee.deptid
?
在介绍另外的一种写法,同样达到外连接的效果,大家可以尝试使用。比如在需求1中,下面的查询语句与需求1中给出的左连接语句等效!
select * from dept ,employee where dept.deptid=employee.deptid(+)
?
总之,外连接就是在关联不上的时候,把其中的部分信息查询出来
?
??????3.全连接full join,语法为full join ... on ...,全连接的查询结果是左外连接和右外连接查询结果的并集,即使一些记录关联不上,也能够把部分信息查询出来
?
?
?
?