【MySQL高级】七种JION理论和实例详解

虽然项目一直在写左外连接、内连接等等的sql,但是其实对具体的实现还是不太清楚,接下来跟我一起来了解一下吧!

1. INNER JON 内连接

在这里插入图片描述
对应的sql语句

select <select_list>
from table A a
INNER JOIN Table B b
ON A.key=B.key

实例

表1
在这里插入图片描述
执行结果
在这里插入图片描述
表2
在这里插入图片描述
执行结果
在这里插入图片描述
内连接
在这里插入图片描述
执行结果
在这里插入图片描述

分析

  • 可以看出,表1有6列,表2有3列,内连接有9列,说明内连接两表的列拼接起来
  • 有重复的列username,并没有合并,都显示出来了
  • ON后为连接条件,内连接只保留条件公有部分,就是保留a.id和b.user_id相等的行,即id=28,use_id=28的行保留下来

小结

内连接只有两者的公有部分

2. LEFT JON 左外连接

图解

在这里插入图片描述
对应的sql语句

select <select_list>
from table A a
LEFT JOIN Table B b
ON A.key=B.key

实例

在这里插入图片描述

在这里插入图片描述

分析

  • 左外连接就是两表的列拼接起来,A表的数据都要,B表没有的行补NULL
3. Right JION 右外连接

图解

在这里插入图片描述
对应的sql

select <select_list>
from table A a
RIGHT JOIN Table B b
ON A.key=B.key

实例

sql
在这里插入图片描述
执行结果
在这里插入图片描述

分析

  • B表数据都要,A表没有的自动补全
4. Right JION 右连接

图解

在这里插入图片描述
对应的sql

select <select_list>
from table A a
LEFT JOIN Table B b
ON A.key=B.key
where A.key=NULL

实例

在这里插入图片描述
执行结果
在这里插入图片描述

5. LEFT JION 左连接

图解

在这里插入图片描述
对应的sql

select <select_list>
from table A a
LEFT JOIN Table B b
ON A.key=B.key
where B.key=NULL

实例

在这里插入图片描述
执行结果
在这里插入图片描述

6. 全外连接

图解

在这里插入图片描述

对应的sql

select <select_list>
from table A a
OUTER JOIN Table B b
ON A.key=B.key

实例

在这里插入图片描述
执行结果
在这里插入图片描述

小结

mysql不能直接操作全外连接,需要使用左外连接与右外连接的两个结果集进行合并并去除重复。union 去重,union all 不去重。

7. 交叉外连接

图解

在这里插入图片描述

对应的sql

select <select_list>
from table A a
OUTER JOIN Table B b
ON A.key=B.key
where B.key=NULL
AND A.key=NULL

实例

在这里插入图片描述
执行结果
在这里插入图片描述
暂不支持

猜你喜欢

转载自blog.csdn.net/yujing1314/article/details/106249473