当前位置:   article > 正文

sql中的各类join连接的区别(natural join/inner join/left join/right join/full join)_inner join natural join

inner join natural join

设有表A和B,它们都具有一系列的列属性

1、自然连接 natural join

select <选择列>
from 表A natural join 表B
  • 1
  • 2

将表A和表B进行自然连接:在A和B所有共同属性上做等值连接,然后再投影去掉重复属性

例如:

select *
from book natural join reader
  • 1
  • 2

2、内连接 inner join

select <选择列>
frome 表A inner join 表B on <连接条件>
  • 1
  • 2

<连接条件> A.s θ B.k(s为表A的属性,k为表B的属性)
θ为等号=时,是等值连接;θ不为等号=时,是不等值连接;
将表A和表B进行内连接:当至少有一个满足连接条件时,返回满足条件的行。

例如:

select book_name
from book inner join reader on book.borrower_id=reader.id
  • 1
  • 2

3、外连接 outer join

(1)左外连接 left join
select <选择列>
from 表A left join 表B on <连接条件>
  • 1
  • 2

<连接条件>参考上文
将表A和表B进行左外连接:在自然连接的结果上,如果t是A中不满足连接条件的元组,则将t添加到结果中,并且t本身不存在的属性取NULL

(2)右外连接 right join
select <选择列>
from 表A right join 表B on <连接条件>
  • 1
  • 2

<连接条件>参考上文
将表A和表B进行右外连接:在自然连接的结果上,如果t是B中不满足连接条件的元组,则将t添加到结果中,并且t本身不存在的属性取NULL

(3)全外连接 full join
select <选择列>
from 表A full join 表B on <连接条件>
  • 1
  • 2

<连接条件>参考上文
将表A和表B进行全外连接:在自然连接的结果上,
1)如果t是A中不满足连接条件的元组,则将t添加到结果中,并且t本身不存在的属性取NULL
2)如果s是B中不满足连接条件的元组,则将s添加到结果中,并且s本身不存在的属性取NULL

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/597461
推荐阅读
  

闽ICP备14008679号