数据库内、外、左、右连接详解

写在前面:

数据库连接操作非常重要,明确连接操作有助于更好地掌握SQL语句查询操作。

数据库连表方式:
内连接 :inner join
外连接 :outer join
左外连接 :left outer join
左连接 :left join
右外连接 right outer join
右连接: right join
全连接 full join 、union

前提准备

现在有2张表,A表和B表,数据和表结构如下:
数据库内、外、左、右连接详解_第1张图片

一、内连接

内连接查询的是两张表的并集,也就是A表和B表都必须有数据才能查询出来;
数据库内、外、左、右连接详解_第2张图片
以下三个查询的结果是一样的,针对上面的表数据,能查询出id为1、2、3数据的SQL语句为:

-- join
select * from A  join B on A.id = B.id 

-- inner join
select * from A inner join B on A.id = B.id 

-- 逗号的连表方式就是内连接
select * from A , B where A.id = B.id 

二、左外连接和左连接

左外连接和左连接是以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。
数据库内、外、左、右连接详解_第3张图片

下面2个查询的结果是一样的,针对上面的表数据,能查询出id为1、2、3、4数据的SQL语句为:

-- left join
select * from A left join B on  A.id = B.id 

-- left outer join
select * from A left outer join B on  A.id = B.id 

三、右外连接和右连接

右外连接和右连接是以右表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分。右连接全称为右外连接,是外连接的一种。

数据库内、外、左、右连接详解_第4张图片
下面2个查询的结果是一样的,针对上面的表数据,能查询出id为1、2、3数据的SQL语句为:

-- right join
select * from A right join B on  A.id = B.id 

-- right outer join
select * from A right outer join B on  A.id = B.id 

四、全连接

全连接显示两侧表中所有满足检索条件的行。
数据库内、外、左、右连接详解_第5张图片
SQL语句为:

select * from a left join b on a.id = b.id
union
select * from a right join b on a.id = b.id

五、总结

1.内连接与外连接的区别是什么?

内连接和外连接的区别:
内连接:inner join(等值连接) 只返回两个表中联结字段相等的数据。
外连接:返回包括左/右表中的所有记录和右/左表中联结字段相等的记录。

2.左外连接和右外连接的区别是什么?

左外连接和右外连接的区别:
左外连接也称左连接。以左表为基表,在FROM子句中使用关键字“LEFT OUTER JOIN”或关键字“LEFT JOIN”来连接两张表。
右外连接也称右连接。以右表为基表,在FROM子句中使用关键字“RIGHT OUTER JOIN”或关键字“RIGHT JOIN”来连接两张表。

3.概括
1.内连接就是取交集的部分。
2.左连接就是左表全部的数据加上交集的数据。
3.右连接就是右表全部的数据加上交集的数据。
4.交叉连接就是数据全都要。

引用

[1]https://blog.csdn.net/qq_27184497/article/details/119672665
[2]https://wudi98.blog.csdn.net/article/details/107238977
[3]https://zhuanlan.zhihu.com/p/258482556

你可能感兴趣的:(MySQL,数据库,sql,mysql)