SQL入门之第十讲——INNER JOIN 内连接

这篇具有很好参考价值的文章主要介绍了SQL入门之第十讲——INNER JOIN 内连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在实际的业务当中,往往需要多张表连接查询,这就会涉及到JOIN 连接

1. JOIN 连接的类型

  • INNER JOIN :内连接, 可以只写JOIN ,只有连接的两个表中,都存在连接标准的数据才会保留下来,相当于两个表的交集。如果前后连接的是同一个表,也叫自连接。
  • LEFT JOIN :左连接,也叫左外连接。操作符左边表中符合WHERE子句中的所有记录将会被返回,操作右边表中如果没有符合ON后面连接的条件时,那么右边表指定选择的列将会返回NULL。
  • RIGHT JOIN:右连接,也叫右外连接。返回右边表所有符合WHERE语句的记录,左表中匹配不上的字段值用NULL来代替。
  • FULL JOIN:全连接。返回所有表中符合WHERE语句条件的所有记录。如果表中指定字段没有符合条件的值的话,用NULL来代替。
    SQL入门之第十讲——INNER JOIN 内连接

2. INNER JOIN 内连接

  • 通过JOIN语句就可以将几个表通过那几个列连接起来
  • INNER JOIN,可以省略掉 'INNER ’ 只写JOIN就可以

基本语法:

select <字段名>
from <表a>
JOIN <表b>
ON a.<字段名> = b.<字段名>;

实例1:将学生表和教师表通过教师编号Tid连接起来

select * 
from students AS s 
join teachers AS t
on s.Tid = t.Tid;

执行结果:
SQL入门之第十讲——INNER JOIN 内连接
查看输出结果,from后面的students表会作为基础表放在前面,后面在根据关联的Tid,去拼接是哪个join后面的teachers 表。

如果将两个表进行调换下位置,那么teachers表将会作为基础表放在前面

select * 
from teachers AS t
join students AS s
on t.Tid = s.Tid;

执行结果:

查看结果时发现,teachers表中一个有6个老师,现在只输出了4个老师,这是因为没出现的2个老师在students里没有对应的学生,所以内连接,只会输出两个表中相互匹配的数据,2个表的交集

JOIN…ON后面可以跟多个连接条件,条件之间使用AND进行连接就可以了。
SQL入门之第十讲——INNER JOIN 内连接

3. 多表内连接

  • JOIN不仅仅可以连接两个表,在实际业务中,连接很多表进行查询都是常事,因此多表内连接也是需要掌握的。

基本语法:

select <字段名>
from <表a>
JOIN <表b>
ON a.<字段名> = b.<字段名>
JOIN <表c>
ON a.<字段名> = C.<字段名>

多表连接过程中,FROM后面的表作为基础表,每次和其他表进行连接,是不变的

实例2:学生表同时去连接教师表和课程表,通过教师编号Tid连接起来

select * 
from students as s
join teachers as t
on s.Tid = t.Tid
join suject as u
on s.Tid = u.Tid;

执行结果:
SQL入门之第十讲——INNER JOIN 内连接

4. USING 关键字

  • 当JOIN…ON后面作为合并条件的列名时,在两个表中相同时,可以使用USING
    (…,…)来简化,取代ON…AND…
  • 如果列名不一样,是不能够使用USING 关键字来简化的,需要特别注意

例如:

select * 
from students as s 
join teachers as t
on s.Tid = t.Tid
and s.Sname= t.Sname

就可以使用 USING 来简化成:

select * 
from students as s 
join teachers as t
USING(Tid,Sname)

5. 自连接

  • 顾名思义,表仅仅能跟别的表进行连接,还能够跟自己连接,就是自连接。

实例3:编写一个SQL查询,查找所有至少连续出现三次的字,表结构如下:
SQL入门之第十讲——INNER JOIN 内连接

select DISTINCT a.num
FROM NUM a 
JOIN NUM b
on a.id+1 = b.id
JOIN NUM c
on a.id+2 = c.id
WHERE a.num = b.num 
and a.num = c.num 

执行结果:
SQL入门之第十讲——INNER JOIN 内连接文章来源地址https://www.toymoban.com/news/detail-433352.html

到了这里,关于SQL入门之第十讲——INNER JOIN 内连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【postgresql 基础入门】自然连接(natural join)与交叉连接(cross join),等价SQL变换形式,以及它们独到的应用场景

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 本文重点介绍natural join与cross join的用法,以及它们的应用场景。 与前面介绍的left join, right join, inner

    2024年04月13日
    浏览(34)
  • 【SQL开发实战技巧】系列(五):从执行计划看IN、EXISTS 和 INNER JOIN效率,我们要分场景不要死记网上结论

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2023年04月09日
    浏览(42)
  • Layui快速入门之第十二节 图标

    目录 一:基本用法 二:图标列表  三:跨域处理             Layui 图标采用字体形式,取材于阿里巴巴矢量图标库  iconfont ,因此可以把一个  icon  看作是一个普通的文本,直接通过  css  即可设定其样式。图标支持  font-class  或  unicode  两种格式                通过

    2024年02月07日
    浏览(34)
  • Layui快速入门之第十三节 日期与时间选择器

    目录 一:基本用法 API 渲染 属性 弹出提示 2.8+ 获取实例 2.8+ 解除实例绑定 2.8+ 关闭日期面板 2.7+ 获取某月的最后一天 二:常规用法 三:多类型选择器  四:范围选择 五:直接静态显示 六:更多功能示例            Layui 是一个基于 jQuery 的前端UI框架,它提供了众多的

    2024年02月07日
    浏览(55)
  • JOIN与INNER JOIN区别

    一、指代不同 1、JOIN:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。 2、INNER JOIN :组合两个表中的记录,只要在公共字段之中有相符的值。 二、特点不同 1、JOIN:每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间

    2024年02月12日
    浏览(43)
  • MySQL Inner Join 和 Left Join 详解

    Inner Join Inner Join 是一种 SQL 查询语句,用于在两个或多个表中查找共有的行。Inner Join 的语法如下: SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; 其中, table1 和 table2 是需要连接的表, column_name 是需要返回的列名。 ON 用于指定连接条件。

    2024年02月05日
    浏览(51)
  • MySQL - Left Join和Inner Join的效率对比,以及优化

    最近在写代码的时候,遇到了需要多表连接的一个问题,初始sql类似于: 这样的多个left join组合,总觉得这种写法是有问题的,后续使用inner join发现速度要比left join快一些 关于left join的概念,大家是都知道的(返回左边全部记录,右表不满足匹配条件的记录对应行返回nul

    2024年02月03日
    浏览(52)
  • SQL入门之第八讲——UPDATE更新语句

    定义:UPDATE更新语句是用来修改表中一条数据或者多条数据记录 基本语法: 1. 更新单行数据 实例1:在学生表中,将学生编号Sid为6的学生姓名Sname修改为:杨红梅 执行结果: SET后面除了带文本之外,还可以是数学表达式 实例2:在学生表中,将学生编号Sid为10的学生姓名对应

    2023年04月12日
    浏览(41)
  • MySQL数据库第十课-------join连接的再续------强强连锁

     欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com __________________________________________________________ join连接  内连接 左连接 右连接 外连接 其他连接 ______________________________________________________________         最近学校课程很多,无法及时更新,还望各位小可爱多多包含,你的

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包