赞
踩
之前学习的内容几乎针对单个表进行简单操作,实际工作中可没有这么简单,复杂的表结构和多表数据关联进行分析,这时候需要我们掌握多表查询方法,一如既往,我们先看一下这篇的主要内容:
下面我们就来一一攻克吧。
表达加法针对于两张相同数据结构不同数据的操作
首先,原student数据库中course表数据如下:
其次,我们在student数据库中新增course1表,新添数据如下:
最后,我们用表的加法,来把这两张表中的数据组合在一起。表的加法,我们要用UNION来实现。
UNION的作用 UNION运算符用于组合两个或更多SELECT语句的结果集
UNION使用前提两个表或多表必须具有相同的列数,数据类型
A. UNION 语法
- SELECT column_name(s) FROM table1
- UNION
- SELECT column_name(s) FROM table2;
我们把以上两张课程表course和couser1,用表加法UNION合并:
- SELECT 课程号,课程名称
- from course
- UNION
- select 课程号,课程名称
- FROM course1;
从结果表中可以看到,course和course1两张表中不同的数据合并在一起了,两张表中重复的数据,SQL会把重复值删除,只保留一个值。
如果允许重复值,请使用 UNION ALL。
B.UNION ALL
若保留两个表或多表所有列的数据,用UNION ALL
- SELECT column_name(s) FROM table1
- UNION ALL
- SELECT column_name(s) FROM table2;
※ 注:UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。
- SELECT 课程号,课程名称
- from course
- UNION ALL
- select 课程号,课程名称
- FROM course1;
如结果所示,两个表中的共有的数据“0001,语文”的重复数据都被保留下来了。
关系型数据库是由多张表组成的,如数据库student下有四张表,他们之间关系如下:
我们来看student表和score表两表之间的关系,两张表就是通过学号这个主键关联起来的。假如我想知道学号为0001的学生的成绩是多少,我就可以在score表中查找到学号为0001的学生的课程号和成绩(一共有3行数据)。
所以关系就是表之间对应的匹配(根据主键),在关系型数据库中,这种关系的学名叫做联结(join)。
A. JOIN连接的作用
JOIN 连接用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
常用的联结如下:
B. CROSS JOIN(交叉联结)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。