03|MySQL基础——分组查询和连接查询
点击蓝字
00
概述
select 分组函数,分组后的字段
from 表
【where 筛选条件】
group by 分组的字段
【having 分组后的筛选】
【order by 排序列表】
四、
MySQL
01
分组查询特点
分组前筛选
使用关键字:where
筛选的表:原始表
位置:group by的前面
分组后筛选
使用关键字:having
筛选的表:分组后的结果
位置:group by 的后面
MySQL
02
连接查询含义
当查询中涉及到了多个表的字段,需要使用多表连接
select字段1,字段2
from表1,表2,...;
笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
如何解决:添加有效的连接条件
MySQL
03
连接查询分类
按年代分类:
sql92:
等值
非等值
自连接
也支持一部分外连接(用于oracle、sqlserver,mysql不支持)
sql99【推荐使用】
内连接
等值
非等值
自连接
外连接
左外
右外
全外(mysql不支持)
交叉连接
MySQL
04
SQL92语法
1、等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 表1.key=表2.key
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
特点:
① 一般为表起别名
②多表的顺序可以调换
③n表连接至少需要n-1个连接条件
④等值连接的结果是多表的交集部分
2、非等值连接
语法:
select 查询列表
from 表1 别名,表2 别名
where 非等值的连接条件
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
3、自连接
语法:
select 查询列表
from 表 别名1,表 别名2
where 等值的连接条件
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序字段】
MySQL
05
SQL99语法
1、内连接
语法:
select查询列表
from 表1 别名
【inner】join 表2 别名 on 连接条件
where 筛选条件
group by分组列表
having分组后的筛选
order by排序列表
limit 子句;
特点:
①表的顺序可以调换
②内连接的结果=多表的交集
③n表连接至少需要n-1个连接条件
分类:
等值连接
非等值连接
自连接
2、外连接
语法:
select查询列表
from 表1 别名
left|right|full【outer】join 表2 别名 on 连接条件
where 筛选条件
group by分组列表
having分组后的筛选
order by排序列表
limit 子句;
特点:
①查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
②left join左边的就是主表,right join 右边的就是主表
full join 两边都是主表
③一般用于查询除了交集部分的剩余的不匹配的行
3、交叉连接
语法:
select查询列表
from 表1 别名
cross join表2 别名;
特点:
类似于笛卡尔乘积
MySQL
END
如果喜欢记得点一下右下角的“好看”
如果想常常看到我
那记得把小林子数据分析“星标”
data
扫描二维码
编辑|小林子
排版|小林子
觉得内容还不错的话,给我点个“在看”呗