内连接的两种方式

张俊红
张俊红
张俊红
54
文章
0
评论
2021-04-0409:53:18 评论 1,306 998字
摘要

本文讲一下关于内连接的两种实现方式。现在有两张表 ta 和 tb,ta 存储了学生的基础信息,tb 存储了学生的课程信息,现在想要看一下每个学生具体的课程信息,就需要把 ta 和 tb 进行连接,且只看那些报了课程的同学,有的学生可能没有报名课程。

在前面的文章中我们讲过两个概念,宽表和窄表,在现实业务中,数据库中很多表存储其实都是以窄表的形式来存储的,但是我们一般从数据库中获取信息的时候,都是需要同时从多个表中来获取信息,也就是需要将多个窄表先进行连接,然后再进行 select。连接方式主要有四种:左连接、右连接、内连接、外连接。默认是内连接(划重点,考试会考,但是貌似很多人不知道)。

今天我们不讲别的,只讲一下关于内连接的两种实现方式。现在有两张表 ta 和 tb,ta 存储了学生的基础信息,tb 存储了学生的课程信息,现在想要看一下每个学生具体的课程信息,就需要把 ta 和 tb 进行连接,且只看那些报了课程的同学,有的学生可能没有报名课程。

ta 表信息如下:

内连接的两种方式

tb 表信息如下:

内连接的两种方式

要想实现我们的需求,我们可以有两种实现形式:

方式一,直接来看代码:

select     ta.stuid as stuid    ,ta.name as name    ,tb.classname as classname    ,tb.teacher as teacherfrom ta,tbwhere ta.classid = tb.classid

得到的结果如下:

stuidnameclassnameteacher2019001皇湘君数据库的发展史兴斌斌2019002张运馨如何成为一名优秀的数据工程师方忻忻

方式二,直接来看代码:

select     ta.stuid as stuid    ,ta.name as name    ,tb.classname as classname    ,tb.teacher as teacherfrom tainner join tb    on ta.classid = tb.classid

方式一和方式得到的结果是一样的,既然结果是一样的,为啥要有两种方式来写呢?第一种书写方式是比较古老的一种写法,对于内连接现在比较常用的,也是比较推荐的写法是第二种方式。我们上面举的例子中只涉及了两个表,但在实际业务中往往不止连接两个表,这个时候用第一种方式不仅写起来会比较抓狂、别人看起来也比较乱,性能也会下降很多。而用第二种方式,可以一直 inner join,不管连接多少个表,看起来都不至于特别乱。如果你还在使用第一种写法,建议切换到第二种。

End.

爱数据网专栏作者:张俊红

作者介绍:一个数据科学路上的学习者、实践者、传播者

个人公众号:俊红的数据分析之路

本文为挖数网专栏作者原创文章,未经允许禁止转载,需要转载请微信联系授权(微信号:lovedata0520)

  • 我的微信公众号
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: