一分钟带你了解MySQL连接查询
一. 表关系
各位小伙伴在学习多表连接查询前,健哥先要介绍下表与表之间的关系。在多张表中,表和表之间是有四种关系的,分别是:一对一、一对多、多对一、多对多四种。
1、一对一关系
所谓一对一关系就是两张表中,一张表的一条数据对应另一张表的一条数据。下图中学生表和学生详情表的id起到了一个对应一个的关系,这就是一对一关系。
2、一对多关系
一对多关系就是一张表的某一条数据对应另一张表的N多条数据,这种关系就是一对多。例如下图中teacher讲师表中的tid为02的数据千锋健哥这条对应subject科目表中的SpringCloud、Redis、RabbitMQ这三条数据因为他们的teaid字段的值都是2。
3. 多对一关系
将一对多关系反过来看就是多对一了。例如下图中subject科目表中的SpringCloud、Redis、RabbitMQ这三条数据都对应teacher讲师表中的千锋健哥这条数据。
4、多对多关系
多对多关系需要借助一张关联表来完成。如下图,student学生表和score成绩表的关系是一对多,subject科目表和score成绩表的关系是一对多。那么student学生表和subject科目表的关系就是N:N多对多的关系。借助score成绩表作为关联表来完成多对多关系。
二. 表连接查询
下面带各位小伙伴一起学习表连接查询啦。表连接查询一共分为三种分别是:内连接,左外连接,右外连接三种方式。
语法: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 中,第二种方式也可以作为内连接查询,但是不符合 SQL 标准。
而第一种属于 SQL 标准,与其他关系型数据库通用。
2. 左外连接(LEFT JOIN ON)
特点:左外连接是以LEFT JOIN关键字左边为左表,关键字右边为右表。左表的数据全显示出来,右表的数据有关联关系的正常显示,没有关联关系的显示null。
#查询所有学生和成绩
select * from student a LEFT JOIN score b ON a.SId = b.stuId;
注意:左外连接,是以左表为主表,依次向右匹配,匹配到,返回结果。
匹配不到,则返回 NULL 值填充。
3. 右外连接(RIGHT JOIN ON)
特点:右外连接是以RIGHT JOIN关键字左边为左表,关键字右边为右表。右表的数据全显示出来,左表的数据有关联关系的正常显示,没有关联关系的显示null。
#查询所有学生和成绩
select * from student a RIGHT JOIN score b ON a.SId = b.stuId;
注意:右外连接,是以右表为主表,依次向左匹配,匹配到,返回结果。
匹配不到,则返回 NULL 值填充。
猜你喜欢LIKE
相关推荐HOT
更多>>servlet底层原理是什么?
1、ServletAPI核心类与接口2、Servlet类处理请求的流程创建servlet类的步骤:创建一个命名为TestServlet继承javax.servlet.http.HttpServlet类详情>>
2023-05-30 10:41:22多线程的优势与劣势分别是什么?
多线程是指在同一个程序中,同时运行多个线程,每个线程都可以独立执行不同的任务,相互之间不会干扰。多线程的优势和劣势如下:优势:提高程序...详情>>
2023-05-30 10:32:12设计模式之生产者与消费者的代码实现
本文主要讲述生产者和消费者模式,文中会使用通俗易懂的案例,使你更好地学习本章知识点并理解原理,做到有道无术。什么是生产者和消费者模式生...详情>>
2023-05-30 10:25:46从零开始学Java之interface接口
一.接口简介简介Java中的接口(interface)类似于是一种特殊的抽象类,它也是众多抽象方法的集合。接口的定义方式、组成部分都与抽象类相似,却比...详情>>
2023-05-29 11:26:17热门推荐
如何进行mysql数据备份?
沸什么是servlet的生命周期?servlet请求处理流程是怎样的?
热servlet底层原理是什么?
热怎样编写java程序?
新多线程的优势与劣势分别是什么?
ssm框架的作用与原理是什么?
设计模式之生产者与消费者的代码实现
接口和抽象类有什么区别?4个方面对比
从零开始学Java之interface接口
从零开始学Java之Java中的内部类是怎么回事?
一分钟带你了解MySQL——基础与介绍
在java中,super关键字怎样使用
什么是事件流以及事件流的传播机制 ?
弹性盒有哪些属性是在父元素身上?