1. 联合查询
将多个查询的结构合并在一起(纵向合并), (字段数不变), 多个查询的记录数合并
等同于将一个表追加到另一个表, 从而实现将两个表的查询组合在一起, 为UNION或UNION ALL
2.连接查询
将多张表连接在一起进行查询(会导致记录数行和字段数列发生改变)
分为 内连接和外连接 子连接
(1)内连接(inner join)
从一张表中取出所有的记录去另外一张表中匹配:利用匹配条件进行匹配,成功了则保留,失败了放弃
原理
- 从第一张表中取出一条记录,然后去另外一张表中进行匹配
- 利用匹配条件进行匹配
- 匹配成功,保留,继续向下匹配
- 匹配失败,向下继续,如果全表匹配失败,结束
基本语法: 表1[inner]join 表2 on匹配条件;
(2)外连接(outer join)
按照某一张表作为主表(表中所有记录在最后都会保留),根据条件去连接另外一张表,从而得到目标数据
原理
- 确定连接主表:左连接就是left join左边的表为主表;right join就是右边为主表
- 拿主表的每一条记录,去匹配另外一张表(从表)的每一条记录
- 如果满足匹配条件,保留,不满足即不保留
- 如果主表记录在从表中一条都没有匹配成功,那么也要保留该记录,从表对应的字段值都为NULL
分为左外连接(left join)和右外连接(right join)
左连接: 左表是主表
右连接: 右表是主表
基本语法:
左连接:主表 left join 从表 on 连接条件;
右连接:从表 right join 主表 on 连接条件;