千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  一分钟带你了解MySQL连接查询

一分钟带你了解MySQL连接查询

来源:千锋教育
发布人:lxl
时间: 2023-05-11 11:04:41

  一. 表关系

  各位小伙伴在学习多表连接查询前,健哥先要介绍下表与表之间的关系。在多张表中,表和表之间是有四种关系的,分别是:一对一、一对多、多对一、多对多四种。

  1、一对一关系

  所谓一对一关系就是两张表中,一张表的一条数据对应另一张表的一条数据。下图中学生表和学生详情表的id起到了一个对应一个的关系,这就是一对一关系。

MySQL连接查询

  2、一对多关系

  一对多关系就是一张表的某一条数据对应另一张表的N多条数据,这种关系就是一对多。例如下图中teacher讲师表中的tid为02的数据千锋健哥这条对应subject科目表中的SpringCloud、Redis、RabbitMQ这三条数据因为他们的teaid字段的值都是2。

MySQL连接查询

  3. 多对一关系

  将一对多关系反过来看就是多对一了。例如下图中subject科目表中的SpringCloud、Redis、RabbitMQ这三条数据都对应teacher讲师表中的千锋健哥这条数据。

MySQL连接查询

  4、多对多关系

  多对多关系需要借助一张关联表来完成。如下图,student学生表和score成绩表的关系是一对多,subject科目表和score成绩表的关系是一对多。那么student学生表和subject科目表的关系就是N:N多对多的关系。借助score成绩表作为关联表来完成多对多关系。

MySQL连接查询

  二. 表连接查询

  下面带各位小伙伴一起学习表连接查询啦。表连接查询一共分为三种分别是:内连接,左外连接,右外连接三种方式。

  语法:SELECT 列名 FROM 表1 连接方式 表2 ON 连接条件

  内连接查询(INNER JOIN ON)

  特点:内连接是将两张表有关联关系的数据显示出来,没有关联关系的不显示。

#1.查询每个讲师所教的科目(显式内连接)
select * from teacher a INNER JOIN `subject` b on a.TId=b.teaid;

#2.查询每个讲师所教的科目(隐式内连接)
select * from teacher a , `subject` b where a.TId=b.teaid;

 

MySQL连接查询

  经验:在 MySql 中,第二种方式也可以作为内连接查询,但是不符合 SQL 标准。

  而第一种属于 SQL 标准,与其他关系型数据库通用。

  2. 左外连接(LEFT JOIN ON)

  特点:左外连接是以LEFT JOIN关键字左边为左表,关键字右边为右表。左表的数据全显示出来,右表的数据有关联关系的正常显示,没有关联关系的显示null。

#查询所有学生和成绩
select * from student a LEFT JOIN score b ON a.SId = b.stuId;

 MySQL连接查询

  注意:左外连接,是以左表为主表,依次向右匹配,匹配到,返回结果。

  匹配不到,则返回 NULL 值填充。

  3. 右外连接(RIGHT JOIN ON)

  特点:右外连接是以RIGHT JOIN关键字左边为左表,关键字右边为右表。右表的数据全显示出来,左表的数据有关联关系的正常显示,没有关联关系的显示null。

#查询所有学生和成绩
select * from student a RIGHT JOIN score b ON a.SId = b.stuId;

 

MySQL连接查询

  注意:右外连接,是以右表为主表,依次向左匹配,匹配到,返回结果。

  匹配不到,则返回 NULL 值填充。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

如何进行mysql数据备份?

2023-05-30

从零开始学Java之Java中的内部类是怎么回事?

2023-05-29

什么是事件流以及事件流的传播机制 ?

2023-05-29

最新文章NEW

什么是servlet的生命周期?servlet请求处理流程是怎样的?

2023-05-30

在java中,super关键字怎样使用

2023-05-29

什么是JavaScript伪数组?

2023-05-25

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>