连接查询介绍
- 连接查询也叫多表查询,常用于查询表头来自与多张表
- 通过不同的连接方式把多张表重新组成一张新的临时表,再对临时表做数据处理
连接查询分类
- 交叉连接:交叉连接是没有任何连接条件的连接方式,它返回的两个表格的所有可能的组合
- 自然连接:是一种根据两个表格之间的隐式相等条件(所有同名列必须相等)自动进行内连接的方式。
- 自连接:自身连接是将同一个表格作为两个不同的表格进行连接的连接方式
内连接:
内连接最常用的一种内连接方式,只有当连接条件成立时,才会返回两个表中的记录。
select * from table1 inner join table2 on 连接条件;
内连接分类:
等值连接 使用相等判断做连接条件
非等值连接 不用相等判断条件做连接条件
等值连接
使用相等判断做连接条件
表里必须有存储相同数据的表头
select 表头名列表 from 表1 as 别名 inner join 表2 as 别名 on 连接条件
[where 筛选条件]|[group by 分组]|[having 分组后筛选]|[order by 排序列表]
非等值连接
不用相等判断条件做连接条件
适合表里没有存储相同数据的表头时使用
select 字段列表
from 表1 表名
inner join 表2 别名 on 连接条件
[where 筛选条件]|[group by 分组]|[having 分组后筛选]|[order by 排序列表]
外连接
- 外连接介绍:
左外连接
- 语法格式 表名 left join 表名 on 连接条件
select tb1.字段...,tb2.字段
from table1 as tb1 left join table2 as tb2
on tb1.字段 = tb2.字段;
- 查询输出结果
左表表头记录全显示
右表表头只显示与条件匹配的记录 ,右表比左表少的记录使用null匹配
右外连接
- 语法格式 表名 right join 表名 on 连接条件
select tb1.字段...,tb2.字段
from table1 as tb1 right join table2 as tb2
on tb1.字段 = tb2.字段;
- 查询输出结果
右表表头记录全显示
左表表头只显示与条件匹配的记录 ,左表比右表少的记录使用null匹配
全外连接
- 说明
也称联合查询,用来合并查询结果
可以合并统一张表的查询记录(不同表的查询记录也可以合并)
要求查询时,多个select语句查询表头个数必须一样
union关键字默认去重,可以使用union all 包含重复项
- 语法格式
(select 语句) union(select 语句);去重
(select 语句) union all(select 语句);不去重
嵌套查询
嵌套查询介绍
是指在一个完整的查询语句中,包含若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式。
包含的查询放在()里
包含查询出现的位置
- where之后
把查询结果作为查询条件
- having之后
把查询结果作为过滤条件
- from之后
把查询结果当作表使用
- select之后
把查询结果当作表头使用