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

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

文末有重点总结和福利内容!

技术类问题,也欢迎大家和我们沟通交流!

前言

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


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

一. 表关系

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

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 连接条件

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 中,第二种方式也可以作为内连接查询,但是不符合 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 值填充。


三. 结语

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

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

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


以上就是本文的全部内容啦,感觉有帮助的话可以关注我们持续追更!

【由浅入深学MySQL】- MySQL连接查询详解的更多相关文章

  1. (转)Mysql 多表查询详解

    MySQL 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

  2. Mysql 多表查询详解

    Reference:  https://blog.csdn.net/jintao_ma/article/details/51260458 一.前言 二.示例 三.注意事项 一.前言 上篇讲到Mysql ...

  3. SQL各种连接查询详解(左连接、右连接..)

    一.交叉连接(cross join) 交叉连接(cross join):有两种,显式的和隐式的,不带on子句,返回的是两表的乘积,也叫笛卡尔积. 例如:下面的语句1和语句2的结果是相同的.语句1:隐式 ...

  4. Mysql高手系列 - 第12篇:子查询详解

    这是Mysql系列第12篇. 环境:mysql5.7.25,cmd命令中进行演示. 本章节非常重要. 子查询 出现在select语句中的select语句,称为子查询或内查询. 外部的select查询语 ...

  5. MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  6. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  7. mysql配置文件my.cnf详解

    原文地址:mysql配置文件my.cnf详解 作者:gron basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的 ...

  8. mysql学习3:mysql之my.cnf详解

    mysql之my.cnf详解 本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html 以下是 my.cnf 配置文件参数解释: #*** ...

  9. mysql触发器trigger 实例详解

    mysql触发器trigger 实例详解 (转自 https://www.cnblogs.com/phpper/p/7587031.html)   MySQL好像从5.0.2版本就开始支持触发器的功能 ...

  10. MySQL权限授权认证详解

    MySQL权限授权认证详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL权限系统介绍1>.权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删除 ...

随机推荐

  1. TypeError: list indices must be integers or slices, not str解决方法

    print (response.json()['data']['patientId'])TypeError: list indices must be integers or slices, not ...

  2. [Unity框架]资源管理02:热更新

    这里可以分成资源打包.资源更新下载.资源加载卸载3个部分 一.资源打包 参考链接: https://blog.uwa4d.com/archives/TechSharing_59.html https: ...

  3. 手写一个简易的ajax

    function ajax(url,successFul){ const xhr=new XMLHttpRequest() xhr.open("Get",url,true) xhr ...

  4. cenos7配置epel源

    1.首先进入/etc/yum.repos.d/目录下,新建一个repo_bak目录,用于保存系统中原来的repo文件 [root@bogon ~]# cd /etc/yum.repos.d/ [roo ...

  5. Dubbo常见问题

    1. dubbo No provider available for the service com.alibaba.dubbo.monitor.MonitorService from registr ...

  6. Jetson Xavier NX 试玩 (二)

    Jetson Xavier NX 试玩 (二) Hello AI World Inference 人工智能推理模型 0 前言 想玩一玩 jetson 的人工智能功能,官方的 instructional ...

  7. P4555 [国家集训队]最长双回文串 回文树(回文自动机)简单题

    贴个题目链接:https://www.luogu.org/problem/P4555 题目:输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(∣X∣,∣Y∣≥1)且X和Y都是回文 ...

  8. 同步协程的必备工具: WaitGroup

    1. 简介 本文将介绍 Go 语言中的 WaitGroup 并发原语,包括 WaitGroup 的基本使用方法.实现原理.使用注意事项以及常见的使用方式.能够更好地理解和应用 WaitGroup 来协 ...

  9. linq小结

    普通查询 var query = from s in context.Student select s; //投影列 var query = from s in context.Student sel ...

  10. java 实现文件夹上传(springBoot 框架)

    有时我们后台管理等服务可能会有这样一个简单需求,就是根据文件夹将整个文件夹下的所有资源都上传到我们的服务器上,本人也是搜索了大量资料,最终以最简单便捷的方式实现该功能,具体操作步骤如下 一.前端如何设 ...