MySQL中怎么实现关联查询

发布时间:2021-07-13 15:27:07 作者:Leah
来源:亿速云 阅读:447

这篇文章将为大家详细讲解有关MySQL中怎么实现关联查询,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

MySQL
关联查询

前面,我们介绍的都是单表查询(就是只从一张表中获取数据),而实际应用的时候,我们都会同时查询多张表,这里,我们就介绍下,多表关联查询的使用。

SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据

MySQL中怎么实现关联查询

前置知识

主键(Primary Key):可以唯一确定一条记录的字段,比如学生表中的学生ID,生活中我们的身份证号
外键(Foreign Key):指向另一张表的主键,比如学生表中的班级ID,班级ID是班级表中的主键,但在学生表中是外键

主键和外键可以在建表的时候指定,他可以在数据库层面,控制你的数据的完整性、一致性。

测试数据参考:http://yuguiyang.github.io/2017/09/09/mysql-handbook-01/

inner join

inner join 可以简写为 join,结果集是两张表中 都存在的记录,是一个交集,详情参考上面的图片。
比如:在学生表中,有一个班级ID,我们想根据班级ID,在班级表中找到班级信息

select 
    *
from 
    t_student a 
-- 要关联查询的表
join 
    t_class b 
-- 使用什么字段去关联这两张表
on 
    a.c_id = b.c_id
;

MySQL中怎么实现关联查询

left join

左关联,以左边的表为主表,不管外键在右表中是否存在,左表的数据都会存在。
比如学生表中,有这样一条记录,他的班级ID是904,但是班级表中并没有904的班级信息,
所以,使用join的话是查不到这条记录的

-- 2. left join 
-- 学生表为主表,包含所有学生信息
select 
    *
from 
    t_student a 
left join 
    t_class b 
on 
    a.c_id = b.c_id
;

MySQL中怎么实现关联查询

right join

右关联,和做关联类似,但已右表为主表

-- 3. right join 
-- 班级表为主表,不管改班级是否有学生信息
select 
    *
from 
    t_student a 
right join 
    t_class b 
on 
    a.c_id = b.c_id
;

MySQL中怎么实现关联查询

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
;

MySQL中怎么实现关联查询

cross join

cross join 是对2个表做笛卡尔积

select *from t_class a 
cross join t_class b 
order by a.c_id,b.c_id
;

关于MySQL中怎么实现关联查询就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. mysql中如何跨库关联查询
  2. mysql关联查询如何优化

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:Linux下如何配置JSP环境

下一篇:MySQL中怎么实现中文排序

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》