前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql中外连接,内连接,左连接,右连接的区别

Mysql中外连接,内连接,左连接,右连接的区别

作者头像
萌萌哒的瓤瓤
发布2021-01-13 17:38:55
4.4K0
发布2021-01-13 17:38:55
举报
文章被收录于专栏:java,python,数据结构,算法

1. 前言

相信大家一定都做过多表的连表查询,并且这其中的查询方式也比较多样.

在这里插入图片描述
在这里插入图片描述

可能主要就是下面这几种方式:

  • 直接通过where语句将重叠的字段进行匹配就比如下面这种

select * from tablea,tableb where tablea.aid=tableb.bid;

  • 另外一种就是通过内连接或者外连接的方式,就比如下面这种

select * from tablea LEFT JOIN tableb on tablea.aid=tableb.bid; select * from tablea RIGHT JOIN tableb on tablea.aid=tableb.bid; select * from tablea INNER JOIN tableb on tablea.aid=tableb.bid;

可能第一种通过where语句查询,大家都能理解. 但是不知道大家有没有去尝试过理解下面关于内连接与外连接查询方式的区别 ,接下来我们先通过一张图来演示一下连接的整个层级关系:

在这里插入图片描述
在这里插入图片描述

接下来我们再来详细讲解他们之间的区别. 我们先看看这次使用的两个表的结构以及数据: tablea:

在这里插入图片描述
在这里插入图片描述

tableb:

在这里插入图片描述
在这里插入图片描述

2. 外连接

2.1左连接

我们先通过两个例子来让大家看看实际的效果我们再来细讲:

代码语言:javascript
复制
select * from tablea LEFT JOIN tableb on tablea.aid=tableb.bid;
在这里插入图片描述
在这里插入图片描述

显然这里是以 tablea 的数据为基准的

代码语言:javascript
复制
select * from tableb LEFT JOIN tablea on tablea.aid=tableb.bid;
在这里插入图片描述
在这里插入图片描述

显然这里是以 tableb 的数据为基准的

看完这两个例子,想必大家也能够自己分析出来了,显然永远是左表的数据是完整的,右表中只会查询出与左表匹配的数据,如果不匹配就不显示,显示为空.整个过程都是以左表为基准

2.2右连接

我们也是通过两个例子来细讲:

代码语言:javascript
复制
select * from tablea RIGHT JOIN tableb on tablea.aid=tableb.bid;
在这里插入图片描述
在这里插入图片描述

显然这里是以 tableb 的数据为基准的

代码语言:javascript
复制
select * from tableb RIGHT JOIN tablea on tablea.aid=tableb.bid;
在这里插入图片描述
在这里插入图片描述

显然这里是以 tablea 的数据为基准的

看完这两个例子,想必大家也能够自己分析出来了,显然永远是右表的数据是完整的,左表中只会查询出与右表匹配的数据,如果不匹配就不显示,显示为空.整个过程都是以右表为基准

到这里我们就要稍微区分一下基准表的定义,我们切不可将那个表名在前就觉得它是基准表,这里还是通过下面两张图:

  • 左连接基准表
在这里插入图片描述
在这里插入图片描述
  • 右连接基准表
在这里插入图片描述
在这里插入图片描述

所以基准表并不是以谁写在前面谁就是基准表定义的,还是通过位置来定义的,左连接就以左边的表为基准表,右连接就以右边的表为基准.

3. 内连接

代码语言:javascript
复制
select * from tableb INNER JOIN tablea on tablea.aid=tableb.bid;
在这里插入图片描述
在这里插入图片描述

这里我们通过与上面外连接的对比分析之后就可以看出来,内连接整个更加能够体现数据的完整性,上图我们可以看出内连接只会显示所有产生连接的数据,那些不匹配的数据,不管是左表中的还是右表中的.

通过上面几个例子.相信大家就能够更加理解MYSQL中这几种连接的意义了.

都看到这里了,如果觉得对你有帮助的话,可以关注博主的公众号,新人up需要你的支持.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 外连接
    • 2.1左连接
      • 2.2右连接
      • 3. 内连接
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档