left join on多表关联_2周零基础搞定SQL——多表查询

f391ce876b2f4f743ccf787feea67843.png

在上一篇文章里,我们学习了SQL的复杂查询,但是依然只是针对一个表的,但在实际工作中,我们需要的数据,往往分布在多个表中,所以为了更好的解决工作中的实际问题,今天我们一起来学习如何用SQL进行多表查询吧!

1.表的加法

在之前的学习中,我们建了一张表course,大家还记得吗?

9597a8feb3bcec0b2dd4f8b69cece0d5.png

接下来我们再数据库中再添加一张表course1,如下:

2284baef6f4ccb6c0aa438f6719abcb5.png

如果大家忘记了如何新建表并向表中插入数据,就回到何书365:轻松搞定数据分析之MySQL——零基础入门里面再复习一下吧!

当然你也可以按如下步骤操作来添加course1:

9d8e0d3326593d47281e9c13929ec211.png

右键,复制表,结构和数据,得到复制的表course_copy

0617b741c57ad3f169d13fb983926134.png

重命名,将表名course_copy重命名为course1

2adc8ff95ec8770b46a9a0eb83cfa7ea.png

右键,打开表,对数据进行修改并保存。

添加完course1这张表,现在在school数据库中,我们就有了两张关于课程信息的表。大家可以看到course和course1这两张表的结构是一样的,不同的是两张表内在图片红框标出的地方存放的数据是不一样的。

d09932a93ce0b8c73b198469cc0c9e7a.png

下面,我们用这两张表来学习表的加法,来把这两张表中的数据组合在一起。表的加法,我们要用UNION来实现。

UNION的作用 UNION运算符用于组合两个或更多SELECT语句的结果集。

UNION使用前提UNION中的每个SELECT语句必须具有相同的列数

  • 这些列也必须具有相似的数据类型
  • 每个SELECT语句中的列也必须以相同的顺序排列

UNION 语法

SELECT column_name(s) FROM table1UNIONSELECT column_name(s) FROM table2;

下面,我们以上面两张课程表为栗子,看一下union的用法:

SELECT 课程号,课程名称from courseUNIONselect 课程号,课程名称FROM course1;
03747ddbf3ab5c8eb0b32773a44e4789.png

从结果表中可以看到,course和course1两张表中不同的数据合并在一起了(红框内的数据),而且绿框中为两张表中重复的数据,SQL会把重复值删除,只保留一个值。

如果允许重复值,请使用 UNION ALL

UNION ALL 语法

SELECT column_name(s) FROM table1UNION ALLSELECT column_name(s) FROM table2;

※ 注:UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。

SELECT 课程号,课程名称from courseUNION ALLselect 课程号,课程名称FROM course1;
33d4b087443a585390bce23c42916438.png

如结果所示,两个表中的共有的数据“0001,语文”的重复数据都被保留下来了。

总结:

  • UNION就是将多段功能类似的SQL连接起来,并且可以去掉重复的行,有DISTINCT的功能。
  • UNION ALL则只是单纯的将多段类似SQL连接起来而且。他们的好处是可以将复杂SQL按不同的功能或作用拆分成一小段SQL进行拼接,可以有效提高查询效率。

2.表的联结

学习完了表的加法,接下来我们来学习表的联结。

关系型数据库是由多张表组成的,如下图,即为school数据库中的四张表:

8293d5cfb4bb43539fd4bb920dd72dee.png

看到这四张表,你能发现他们之间有什么关系吗?

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值