oracle连接查询sql 内连接 外连接 全连接
oracle中的连接可分为,内连接(inner join)、外连接(outer join)、全连接(full join),不光是Oracle,其他很多的数据库也都有这3种连接查询方式
部门表dept
?
deptiddeptName1开发部2财务部3人事部?
职工表employee
?
eiddeptideName11刘德华21张惠妹35张学友?
比如现在有需求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 ...,全连接的查询结果是左外连接和右外连接查询结果的并集,即使一些记录关联不上,也能够把部分信息查询出来