内连接、外连接的区别及作用

1.基本介绍

不管是内连接、外连接还是带where子句的多表查询,都组合自多个表,并生成结果表。

1.内连接只返回两个表中连接字段相等的行。inner join(等值连接) 只返回两个表中联结字段相等的数据
2.左外连接(也称左连接)返回包括左表中的所有记录和右表中连接字段相等的记录。以左表为基表,在from子句中使用关键字left outer join”或关键字“left join”来连接两张表。
3.右外连接(也称右连接)返回包括右表中的所有记录和左表中连接字段相等的记录。以右表为基表,在from子句中使用关键字“right outer join”或关键字“right join”来连接两张表。
4.全外连接返回左右表中所有的记录和左右表中连接字段相等的记录。在from子句中使用关键字“full outer join”或关键字“full join”来连接两张表。

5.交叉连接(笛卡尔积):返回被连接的两个表所有数据行的笛卡尔积。返回结果集合中的数据行数等于第一个表中复合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

6.左连接与内连接的关系:左外连接 = 内连接 + 左边表中失配的元组(其中,缺少的右边表中的属性值用NULL表示)

 

 

7. 右连接与内连接的关系:右外连接 = 内连接 + 右边表中失配的元组(其中,缺少的左边表中的属性值用NULL表示)

8.全外连接与内连接的关系:内连接 + 左边表中失配的元组 + 右边表中失配的元组。

 9.交叉连接

 2.代码演示

 1.交叉连接(又称笛卡尔积)

--第一种
select * from tb1 cross join tb2;
--第二种
select * from tb1 join tb2;
--第三种
select * from tb1,tb2;   --纯粹连接查询
--第三种+where条件
select * from tb1,tb2 where tb1.id=tb2.id;

2.内连接

--语法(内外连接模板都如此)
select 列名
from 表名1
inner join 表名2
on 条件;

--实操:根据学生表xsb和学生成绩表cjb,使用内连接查询每个学生及其选课成绩的详细信息。
select * from xsb
inner join cjb
on xsb.xh=cjb.xh;

3.左外连接/右外连接

作用:实现两表的连接,可以查询展示两表中的需要信息。区别如下:

--左连接,查询在学生表中的所有学号的有关信息
select * from xsb
left join cjb
on xsb.xh=cjb.xh;

--右链接,查询在成绩表中的所有学号的有关信息
select * from xsb
right join cjb
on xsb.xh=cjb.xh;

4.全外连接 

select * from xsb
full join cjb
on xsb.xh=cjb.xh;

参考:

1.内连接、外连接、全外连接、交叉连接用法汇总(个人记录使用)_Wind2814的博客-CSDN博客_全连接 外连接

2.(1条消息) 内连接、左外连接与右外连接的区别及作用介绍_吴迪98的博客-CSDN博客_左连接,右连接,内连接,外连接的区别 

猜你喜欢

转载自blog.csdn.net/qq_62687015/article/details/128104836
今日推荐