MySQL-关联查询

一、inner join

inner join 可以简写为 join,结果集是两张表中 都存在的记录,是一个交集,详情参考上面的图片。
比如:在学生表中,有一个班级ID,我们想根据班级ID,在班级表中找到班级信息
select 
    *
from 
    t_student a 
-- 要关联查询的表
join 
    t_class b 
-- 使用什么字段去关联这两张表
on 
    a.c_id = b.c_id
;

二、left join

左关联,以左边的表为主表,不管外键在右表中是否存在,左表的数据都会存在。
比如学生表中,有这样一条记录,他的班级ID是904,但是班级表中并没有904的班级信息,
所以,使用join的话是查不到这条记录的
-- 学生表为主表,包含所有学生信息
select 
    *
from 
    t_student a 
left join 
    t_class b 
on 
    a.c_id = b.c_id
;
三、right join
右关联,和做关联类似,但已右表为主表
-- 班级表为主表,不管改班级是否有学生信息
select 
    *
from 
    t_student a 
right join 
    t_class b 
on 
    a.c_id = b.c_id
;
四、full outer join
全关联,mysql没有full join 语法,我们可以通过使用union来实现
select 
    *
from 
    t_student a 
left join 
    t_class b 
on 
    a.c_id = b.c_id
UNION
select 
    *
from 
    t_student a 
right join 
    t_class b 
on 
    a.c_id = b.c_id
;
五、cross join
cross join 是对2个表做笛卡尔积
select *from t_class a 
cross join t_class b 
order by a.c_id,b.c_id
;
关联查询的话,我们主要是选择好主表,然后找好表与表之间的关联关系,注意多对多、一对多的这种关系,验证号结果数据就行了。
(0)

相关推荐

  • SQL查询优化实践

    为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上,即随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢,且数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计数据库时 ...

  • Mysql update多表联合更新

    https://blog.csdn.net/u012604745/article/details/80642015 下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就 ...

  • Oracle 中的JOIN(左连接、右连接、全连接)

    Oracle 中的JOIN 1.概述 1.1.所有的join连接,都可以加上类似where a.id='1000'的条件,达到同样的效果. 1.2.除了cross join不可以加on外,其它join ...

  • MySQL 多表查询

    union 结果集合并 使用多个select分别查询不同的表,把多个select查到的记录合并在一起 一个select查到m条记录,另一个select查到n条记录,合并之后就是m+n条记录 #查询全校 ...

  • Mysql数据查询

    目录 1.条件查询 1.1条件查询 1.2比较运算符 1.3逻辑运算符 1.4模糊查询 1.5in查询 1.6between查询 1.7null值判断 1.8排序 2聚合函数 2.1常见函数列表 co ...

  • mysql 实现表连接(左,右,内,全连接)【转】

    查询中出现两个表的连接,下面通过实例来讲解一下各种连接查询的不同之处 表 a,和表b 如下图 a 表中 有 abcd b表中有 abcf 内连接: SELECT * from a INNER JOIN ...

  • EXCEL多表关联查询实战

    继续函数实战系列教程,今天要分享的案例是根据填写的表名自动提取对应表中的数据 数据准备: 需求说明: 我们希望实现,我们选择不同月份,显示对应月份表中的数据! 处理方案: 1.构建下拉列表(菜单) 数 ...

  • MyBatis初级实战之六:一对多关联查询

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  • MySQL连接查询中索引的重要性

    在mysql中,我们要从多张表中读取数据时,往往需要用到连接查询.连接查询通过两张表中符合连接关系的字段来建立两张表的关联,通常包括内连接.左外连接.右外连接和全连接.内连接会保留两张表中共有的那部分 ...

  • 【函数007】- EXCEL多表关联查询实战

    数据准备: 需求说明: 我们希望实现,我们选择不同月份,显示对应月份表中的数据! 处理方案: 1.构建下拉列表(菜单) 数据-数据有效性(2013版本开始叫数据验证)-序列 来源中写入对应的月份 注意 ...

  • MySQL 子查询语句

    子查询基本概念 子查询,是指以结果集的形式供其他查询语句使用的查询语句.这样,可以在一个完整的查询语句之中,嵌套了若干个不同功能的小查询,从而一起完成更为复杂的查询. 根据结果集的类型不同,子查询大致 ...

  • MySQL复杂查询:连接查询+取某个类型的最大值

    本文链接:https://www.cnblogs.com/alanabc/p/10167926.html 需求 假设有一个考试,比如CET(包括CET-4和CET-6),学生可以多次报考刷分.现在某教 ...

  • Laravel 两表关联查询 | Laravel China 社区

    问题描述: 两表关联 商品表,关联库存表, 现 库存表 反向关联商品表,查询商品名字,但会查询出很多为空的数据 未使用查询条件结果如图 模型关联代码如下: class GoodsSpec extend ...

  • Mysql中查询某个数据库中所有表的字段信息

    前言有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢?在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUMNS ...

  • 多表关联查询过滤条件写在on与where后的区别

    SQL优化过程中,发现开发人员在写多表关联查询的时候,对于谓词过滤条件的写法很随意,写在on后面与where后面的情况均有,这可能会导致没有理解清楚其真正的含义而无法得到期望的结果. 多表关联连接方式 ...