【由浅入深学MySQL】- MySQL连接查询详解

这篇具有很好参考价值的文章主要介绍了【由浅入深学MySQL】- MySQL连接查询详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本系列为:MySQL数据库详解,为千锋教育资深Java教学老师独家创作

致力于为大家讲解清晰MySQL数据库相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【点个关注】持续追更~

文末有重点总结和福利内容!
技术类问题,也欢迎大家和我们沟通交流!

前言

从今天开始本系列内容就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。


全文大约 【1475】字, 不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富案例及配图,让你更好的理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......

一. 表关系

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

1. 一对一关系

所谓一对一关系就是两张表中,一张表的一条数据对应另一张表的一条数据。

下图中学生表和学生详情表的id起到了一个对应一个的关系,这就是一对一关系。

【由浅入深学MySQL】- MySQL连接查询详解

2. 一对多关系

一对多关系就是一张表的某一条数据对应另一张表的N多条数据,这种关系就是一对多。

例如下图中teacher讲师表中的tid为02的数据这条对应subject科目表中的SpringCloud、Redis、RabbitMQ这三条数据因为他们的teaid字段的值都是2。

【由浅入深学MySQL】- MySQL连接查询详解

3. 多对一关系

将一对多关系反过来看就是多对一了。

例如下图中subject科目表中的SpringCloud、Redis、RabbitMQ这三条数据都对应teacher讲师表中的这条数据。

【由浅入深学MySQL】- MySQL连接查询详解

4. 多对多关系

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

【由浅入深学MySQL】- MySQL连接查询详解

二. 表连接查询

下面带各位小伙伴一起学习表连接查询。

表连接查询一共分为三种分别是:内连接,左外连接,右外连接三种方式。

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

1. 内连接查询(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连接查询详解

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

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

2. 左外连接(LEFT JOIN ON)

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

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

【由浅入深学MySQL】- MySQL连接查询详解

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

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

3. 右外连接(RIGHT JOIN ON)

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

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

【由浅入深学MySQL】- MySQL连接查询详解

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

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


三. 结语

最后在这里对本文核心要点进行总结:

  1. 熟练掌握表与表之间的四种关系:一对一、一对多、多对一、多对多。

  2. 熟练掌握表关联查询的三种方式:内连接查询、左外连接查询、右外连接查询,并熟记他们的特点。


以上就是本文的全部内容啦,感觉有帮助的话可以关注我们持续追更!文章来源地址https://www.toymoban.com/news/detail-440714.html

到了这里,关于【由浅入深学MySQL】- MySQL连接查询详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【由浅入深学MySQL】之MySQL索引基础入门

    本系列为:MySQL数据库详解,为千锋教育资深教学老师独家创作 致力于为大家讲解清晰MySQL数据库相关知识点,含有丰富的代码案例及讲解。如果感觉对大家有帮助的话,可以【关注】持续追更~ 文末有本文重点总结,技术类问题,也欢迎大家和我们沟通交流! 从今天开始本

    2024年02月05日
    浏览(44)
  • 由浅入深学MySQL之事务全攻略

    从今天开始本系列就带各位小伙伴学习数据库技术。 数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约 【1707】 字,不说废话,只讲可以让你学到技术、明白原

    2024年02月03日
    浏览(52)
  • 由浅入深详解四种分布式锁

    在多线程环境下,为了保证数据的线程安全, 锁保证同一时刻,只有一个可以访问和更新共享数据 。在单机系统我们可以使用 synchronized 锁或者 Lock 锁保证线程安全。 synchronized 锁是 Java 提供的一种内置锁,在单个 JVM 进程中提供线程之间的锁定机制,控制多线程并发。只适

    2023年04月19日
    浏览(27)
  • 【由浅入深讲MySQL数据库(二)】MySQL的安装

    从今天开始就带各位小伙伴学习数据库技术。 数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。 本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约 【1800】字 ,不说废话,只讲可以让你学到技术、明白原理的纯

    2024年02月04日
    浏览(81)
  • 由浅入深讲MySQL数据库之MySQL的基础与介绍

    从今天开始, 我们就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深, 全面讲解数据库体系。 非常适合零基础的小伙伴来学习。 全文大约 【1900】字 ,不说废话,只讲可以让你学到技术、明白原理

    2024年02月05日
    浏览(35)
  • Docker由浅入深(一)

    容器化技术介绍 介绍容器化之前,我们得先知道,为什么会出现容器化,容器化之前都经历了什么 物理机时代 部署非常慢 成功很高 浪费资源 难于扩展与迁移 受制于硬件 虚拟化时代 在同一个物理机上安装多个虚拟机,每个虚拟机安装操作系统和应用, 虚拟机之间物理资源

    2024年02月03日
    浏览(49)
  • 由浅入深了解HashMap源码

           由经典面试题引入,讲解一下HashMap的底层数据结构?这个面试题你当然可以只答,HashMap底层的数据结构是由(数组+链表+红黑树)实现的,但是显然面试官不太满意这个答案,毕竟这里有一个坑需要你去填,那就是在回答HashMap的底层数据结构时需要考虑JDK的版本,因

    2023年04月13日
    浏览(42)
  • React - redux 使用(由浅入深)

    中文文档: http://www.redux.org.cn/ 英文文档: https://redux.js.org/ Github: https://github.com/reactjs/redux 可直接参照 目录十 进行使用 react-redux redux 是一个专门用于做状态管理的JS库(不是react插件库)。 它可以用在 react, angular, vue 等项目中, 但基本与 react 配合使用。 作用: 集中式管理 re

    2024年02月07日
    浏览(50)
  • 【个人笔记】由浅入深分析 ClickHouse

    项目中不少地方使用到ClickHouse,就对它做了一个相对深入一点的了解和研究。并对各种知识点及整理过程中的一些理解心得进行了汇总并分享出来,希望对其他同学能有帮助。 本文主要讲解ClickHouse的特点、读写过程、存储形式、索引、引擎、物化视图等特性。 适合 入门和

    2024年01月20日
    浏览(43)
  • 由浅入深Netty代码调优

    序列化,反序列化主要用在消息正文的转换上 序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[]) 反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理 目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如

    2024年02月05日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包