数据库:笛卡尔积、内连接、左连接、右连接

在关系型数据库中经常用到多表查询操作,因此连接(join)就是一种非常重要的手段。

在学习中使用两个表进行辅助了解 employee 员工表,department 部门表

employee 

数据库:笛卡尔积、内连接、左连接、右连接_第1张图片

department

数据库:笛卡尔积、内连接、左连接、右连接_第2张图片

1.笛卡尔积

笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join)。所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,下图中两个表连接即为笛卡尔积(交叉连接)

数据库:笛卡尔积、内连接、左连接、右连接_第3张图片

select * from employee INNER JOIN department 

当没有任何限制条件的时候,此时查询出的结果就是笛卡尔乘积后的结果。然而如果对于查询结果没有任何限制条件的话,会使结果非常杂乱没有任何实际意义,这就需要我们添加限制条件筛选出有价值的信息。

2.内连接

在笛卡尔积中得到的数据中再取符合条件的数据

select e.id,e.name,e.depid,d.id,d.name
from employee e,department d
WHERE e.depid = d.id;

数据库:笛卡尔积、内连接、左连接、右连接_第4张图片

内连接查询中的限制条件,取到的数据就是表中同时满足限制条件的数据,对于单表来说,内连接取的是两表中满足条件的交集

数据库:笛卡尔积、内连接、左连接、右连接_第5张图片

3.左外连接

是指以左边的表的数据为基准,去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为null。

关键字left outer join,等效于left join,在关联查询中,做外连接查询就是左连接查询,两者是一个概念。

select e.id,e.name,e.depid,d.name 
from employee e left join department d 
on e.depid = d.id

on之后的条件,emloyee 左连接department的限制条件

数据库:笛卡尔积、内连接、左连接、右连接_第6张图片

数据库:笛卡尔积、内连接、左连接、右连接_第7张图片

4.右外连接

类似于左外连接,右外连接是以右边的表为基准匹配左边的表,如果匹配到就显示,匹配不到就显示null

select e.id,e.name,e.depid,d.name 
from employee e right join department d 
on e.depid = d.id

数据库:笛卡尔积、内连接、左连接、右连接_第8张图片

数据库:笛卡尔积、内连接、左连接、右连接_第9张图片

 

 

 

你可能感兴趣的:(SQL数据库)