- 一、left join
- 二、right join
- 三、join
- 《Java 2019 超神之路》
- 《Dubbo 实现原理与源码解析 —— 精品合集》
- 《Spring 实现原理与源码解析 —— 精品合集》
- 《MyBatis 实现原理与源码解析 —— 精品合集》
- 《Spring MVC 实现原理与源码解析 —— 精品合集》
- 《Spring Boot 实现原理与源码解析 —— 精品合集》
- 《数据库实体设计合集》
- 《Java 面试题 —— 精品合集》
- 《Java 学习指南 —— 精品合集》
哈,好久没更新文章了,今天来说说关于mySQL那些年的小事。说到mySQL啊,用了挺久的了,但是有个问题一直在困扰着我,就是left join、join、right join和inner join等等各种join的区别。网上搜,最常见的就是一张图解图,如下:
![b0983f2ae34b6425cde1769435954d90.png](https://i-blog.csdnimg.cn/blog_migrate/3c2e2563c41d18defd18d0db22d2a030.jpeg)
真的是一张图道清所有join的区别啊,可惜我还是看不懂,可能人比较懒,然后基本一个left join给我就是够用的了,所以就没怎么去仔细研究了,但是现实还是逼我去搞清楚,索性自己动手,总算理解图中的含义了,下面就听我一一道来。
首先,我们先来建两张表,第一张表命名为kemu,第二张表命名为score:
![50a549b65eaa53ee888bffd9b3bffcf3.png](https://i-blog.csdnimg.cn/blog_migrate/7a4dcf31520361334b3ab5b4ab1086f2.png)
![f28f6550f6c7a82973996d947317b9cb.png](https://i-blog.csdnimg.cn/blog_migrate/59c70dc418609b25bcb9d634d0800977.jpeg)
一、left join
顾名思义,就是“左连接”,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下:
select
*
from
kemu
left join score on kemu.id = score.id
结果集:
![a321b6f0122605e5abcef7ce7903d9f8.png](https://i-blog.csdnimg.cn/blog_migrate/44b22a94f221a9c9aa6d1fc59cf09d6a.png)
![d9bdd105b213a5fff80dccff8715bc6a.png](https://i-blog.csdnimg.cn/blog_migrate/75f868080920c1f1b0ce07944a8d7e83.png)
二、right join
“右连接”,表1右连接表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据,如下:
select
*
from
kemu
right join score on kemu.id = score.id
结果集:
![c2418c440e049175eb522edda26aa354.png](https://i-blog.csdnimg.cn/blog_migrate/91127e50e272ddfdac69156e71693f4d.png)
![09f22061a23ccdf579c77e883aed7695.png](https://i-blog.csdnimg.cn/blog_migrate/dd9037d3180ee00e43a4c42e4e56e601.png)
三、join
join,其实就是“inner join”,为了简写才写成join,两个是表示一个的,内连接,表示以两个表的交集为主,查出来是两个表有交集的部分,其余没有关联就不额外显示出来,这个用的情况也是挺多的,如下
select
*
from
kemu
join score on kemu.id = score.id
结果集:
![724ef770a3abcf52f20e40acb21aba00.png](https://i-blog.csdnimg.cn/blog_migrate/79c6da3545fb8de624a875cfc43f0bb6.png)
![bbad8677b0eb1f2834b8016fa7bc98e8.png](https://i-blog.csdnimg.cn/blog_migrate/f76ff90ecbcdc03d4d3645f547850ec8.png)
以上就是三种连接的区别!