Oracle 左连接、右连接小记

有两张表:tbl_employee  员工信息表、tbl_position 岗位表

tbl_employee {

  id,

  name,

  p_id

}

 

tbl_position{

p_id,

p_name

}

 

 

需求一:将所有员工信息列出,并带出岗位信息,有的员工可能没有岗位信息,所以可以使用外连接实现。

   主流数据库通用的使用方法:左连接实现

   select  e.name,p.p_name

   from tbl_employee e

   left join  tbl_position  p

   on (e.p_id=p.p_id)

 

   在Oracle中可以使用更简单的方式:对于外连接,Oracle中可以使用“(+)”来表示.

   select  e.name,p.p_name

   from tbl_employee e,tbl_position  p

   where e.p_id=p.p_id(+)

 

 

需求二:将所有岗位信息列出,并将该岗位下的人员信息列出,有的岗位下可能没有人员,所以可以使用外连接实现。

   主流数据库通用的使用方法:右连接实现

   select  e.name,p.p_name

   from tbl_employee e

   right join tbl_position  p

   on (e.p_id=p.p_id)

 

   在Oracle中可以使用:

   select  e.name,p.p_name

   from tbl_employee e,tbl_position  p

   where e.p_id(+)=p.p_id

 

 

需求三:将所有岗位信息和所有的人员信息列出,包括没有对应岗位的员工记录和没有任何员工的岗位记录,所以可以使用全外关联实现。

   普通数据库使用:左连接实现

   select  e.name,p.p_name

   from tbl_employee e

   full join tbl_position  p

   on (e.p_id=p.p_id)

 

   小结:

   一、我们在数据查询中主要的连接无非是这几个 :  left join、right join 、full join 、cross join

     1、left join    左向外连接,返回左边表所有符合条件的记录,简单理解就是将左边的表作为主要显示表;

     2、right join  右向外连接,返回右边表所有符合条件的记录,简单理解就是将右边的表作为主要显示表

     3、full join    完整外部连接,它是左向外连接和右向外连接的合集;

     4、cross join 交叉连接,也称笛卡儿积。返回左表中的每一行与右表中所有行的组合。  

 

  二、Orcal 中(+) 的使用

     我们可以简单地理解为: (+)所在字段的表的对应另一个表为主要显示表。  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值