vlambda博客
学习文章列表

03|MySQL基础——分组查询和连接查询

点击蓝字


00

概述


select 分组函数,分组后的字段

from 表

【where 筛选条件】

group by 分组的字段

【having 分组后的筛选】

【order by 排序列表】

四、



03|MySQL基础——分组查询和连接查询 MySQL 03|MySQL基础——分组查询和连接查询



01

03|MySQL基础——分组查询和连接查询

分组查询特点


分组前筛选 

使用关键字:where

筛选的表:原始表

位置:group by的前面


分组后筛选

使用关键字:having

筛选的表:分组后的结果

位置:group by 的后面



03|MySQL基础——分组查询和连接查询 MySQL 03|MySQL基础——分组查询和连接查询



02

03|MySQL基础——分组查询和连接查询

连接查询含义


当查询中涉及到了多个表的字段,需要使用多表连接

select字段1,字段2

from表1,表2,...;


笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接

如何解决:添加有效的连接条件





03|MySQL基础——分组查询和连接查询 MySQL 03|MySQL基础——分组查询和连接查询



03

03|MySQL基础——分组查询和连接查询

连接查询分类


按年代分类:

sql92:

等值

非等值

自连接


也支持一部分外连接(用于oracle、sqlserver,mysql不支持)

sql99【推荐使用】

内连接

等值

非等值

自连接

外连接

左外

右外

全外(mysql不支持)

交叉连接





03|MySQL基础——分组查询和连接查询 MySQL 03|MySQL基础——分组查询和连接查询



04

03|MySQL基础——分组查询和连接查询

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 排序字段】



03|MySQL基础——分组查询和连接查询 MySQL 03|MySQL基础——分组查询和连接查询



05

03|MySQL基础——分组查询和连接查询

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 别名;


特点:

类似于笛卡尔乘积



03|MySQL基础——分组查询和连接查询 MySQL 03|MySQL基础——分组查询和连接查询



END


如果喜欢记得点一下右下角的“好看”

如果想常常看到我

那记得把小林子数据分析“星标”


data

03|MySQL基础——分组查询和连接查询

扫描二维码

编辑|小林子

排版|小林子


觉得内容还不错的话,给我点个“在看”呗