连接查询又叫多表查询
select * from 表1,表2 ;//会有笛卡尔乘积现象 有n*m条
内连接查询
内连接查询: 仅将两个表中满足连接条件的行组合起来作为结果集
关键字:[inner] join … on
语法:
表1 [inner] join 表2 on 表1.字段=表2.字段语法解释:
从表1中取出每一条记录,去表2中与所有的记录进行匹配,匹配必须是某个条件在表1中与表2中相同,最终才会保留结果,否则不保留。inner 关键字可省略不写;on 表示连接条件:条件字段就是代表相同的业务含义(如下面两张表中的 employee.dept_id 和 department.id),大多数情况下为两张表中的主外键关系。
【连接类型】 join 第二张表 on 连接条件 where 筛选条件
外连接查询
外连接查询:以某张表为主,取出里面的所有记录,然后每条与另外一张表进行连接,不管能不能匹配上条件,最终都会保留。能匹配,正确保留;不能匹配,其它表的字段都置空(null),称为外连接。
外连接查询分为左外连接查询和右外连接查询;
关键字:left/right [outer] join … on。
语法:
表1 left/right [outer] join 表2 on 表1.字段=表2.字段
语法解释:
左外连接:在内连接的基础上,还包含表1中所有不符合条件的数据行,并在其中的表2列填写 NULL;
右外连接:在内连接的基础上,还包含表2中所有不符合条件的数据行,并在其中的表1列填写 NULL。
联合查询
当查询结果来自于多张表,但多张表之间没有关联,这个时候往往使用联合查询
语法:
select 查询列表 from 表1 where 筛选条件
union
select 查询列表 from 表2 where 筛选条件特点(要求):
1、多条待联合的查询语句的查询列数必须一致,查询类型、字段意义最好一致
2、union实现去重查询,当我们两个表中都有一个相同的数据时,union就是自动去重,删除一个重复的,但是我们也可以使用union all显示出重复数据实现全部查询union all 实现全部查询,包含重复项3.union all显示出重复数据实现全部查询union all 实现全部查询,包含重复项
分页查询
select 查询列表 from 【join type join 表2 on 连接条件 where 筛选条件 group by 分组字段,having 分组后的筛选 order by 排序的字段】 limit offset,size;
offset(第几行-1)*大小
union和union all联合查询