有两张表:tbl_employee 员工信息表、tbl_position 岗位表
tbl_employee{
id,
name,
p_id
}
tbl_position{
p_id,
p_name
}
需求一:将所有员工信息列出,并带出岗位信息,有的员工可能没有岗位信息,所以可以使用外连接实现。
主流数据库通用的使用方法:左连接实现
select e.name,p.p_name
from tbl_employeee
left jointbl_position p
on (e.p_id=p.p_id)
在Oracle中可以使用更简单的方式:对于外连接,Oracle中可以使用“(+)”来表示.
select e.name,p.p_name
from tbl_employeee,tbl_position p
where e.p_id=p.p_id(+)
需求二:将所有岗位信息列出,并将该岗位下的人员信息列出,有的岗位下可能没有人员,所以可以使用外连接实现。
主流数据库通用的使用方法:右连接实现
select e.name,p.p_name
from tbl_employeee
right jointbl_position p
on (e.p_id=p.p_id)
在Oracle中可以使用:
select e.name,p.p_name
from tbl_employeee,tbl_position p
where e.p_id(+)=p.p_id
需求三:将所有岗位信息和所有的人员信息列出,包括没有对应岗位的员工记录和没有任何员工的岗位记录,所以可以使用全外关联实现。
普通数据库使用:左连接实现
select e.name,p.p_name
from tbl_employeee
full jointbl_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 中(+) 的使用
我们可以简单地理解为: (+)所在字段的表的对应另一个表为主要显示表。