一、概念

从多个表中查询数据时,需要在表和表间建立连接,一般使用主外键建立连接

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

二、连接种类

 

1.

 

等连接:连接条件使用等号

 

非等连接:连接条件使用等号以外的其它符号

 

2.

 

内连接:根据指定的连接条件进行连接查询,满足连接条件的数据才会出现在结果集(最常见的等值连接)

 

外连接:在内连接的基础上,将某个连接表不符合连接条件的记录加入结果集

 

3.自连接:自身表中的列关联自身表中的其它列

 

4.集合操作符

 

union:两个集合的并集,去掉重复内容

 

union all:两个集合的并集,重复内容取2

 

minus:第一个集合减去和第二个集合相交的内容

 

intersect:两个集合的交集

 

三、连接查询操作

 

1).连接查询语法

 

select last_name,name

 

from s_emp,s_dept

 

where s_emp.dept_id=s_dept.id;

 

左外连接:A left outer join B-----中的A为基准,遇到A中不符合条件的也加入, B中用null填充,包含左边表的全部行

基本写法:

1. Select  e.last_name,d.name

From s_emp e left outer join s_dept d

On e.dept_id=d.id;

 Oracle特有写法:

2. Select  e.last_name,d.name

From s_emp e ,s_dept d

Where  e.dept_id(+)=d.id;

右外连接:A right outer join B -----B为基准,遇到B中不符合条件的也加入 A中用null填充,包含右边表的全部行

 

 

全外连接(包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行)

 

查询所有员工名、员工部门名(员工没有分配部门、部门没有员工)?

 

select e.last_name,d.name

 

from s_emp e full outer join s_dept d

 

on e.dept_id=d.id;

 

 

 

select e.last_name,d.name

 

from s_emp e,s_dept d

 

where e.dept_id(+)=d.id(+); //Errororacle没有全外连接特有写法

 

 

2)集合操作符

 

eg:

union:两个集合的并集,去掉重复内容

 

select e.last_name,d.name

 

from s_emp e,s_dept d

 

where e.dept_id=d.id(+)

 

union

 

select e.last_name,d.name

 

from s_emp e,s_dept d

 

where e.dept_id(+)=d.id;

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄