MySQL数据库(三)

前言

聚合查询、分组查询、联合查询是数据库知识中最重要的一部分,是将表的行与行之间进行运算。

784852ccb4d64958ac228cde40c72314.jpeg (1440×1080)

目录

前言

一、聚合查询

(一)聚合函数

1、count 

2、sum

3、avg

4、max

5、min

二、分组查询

(一)group by

(二)指定条件筛选

1、分组前筛选,使用where条件

2、分组后筛选,使用having条件

3、同时分组前和分组后筛选

三、联合查询(多表查询)

(一)内连接

(二)外连接

1、左外连接

2、右外连接

3、外连接多个表

(三)自连接

(四)子查询

(五)合并查询 union

四、新增和查询联合

结语


一、聚合查询

(一)聚合函数

函数与括号之间不能有空格

1、count 

查询到的数据的数量,null不会计入结果

select count(列名) from 表名;

同时,也可以使用全列查询:

select count(*) from 表名;

2、sum

查询到的数据的总和,null不会计入结果、不是数字没有意义,不能进行全列查询

select sum(列名) from 表名;

3、avg

查询到的数据的平均值,不是数字没有意义,不能进行全列查询

select avg(列名) from 表名;

4、max

查询到的数据的最大值,不是数字没有意义,不能进行全列查询

select max(列名) from 表名;

5、min

查询到的数据的最小值,不是数字没有意义,不能进行全列查询

select min(列名) from 表名;

二、分组查询

(一)group by

指定一个列,把列里面相同的值分为一组进行查询

列如:

MySQL数据库(三)_第1张图片

 同时,select 指定的列,要么是带有聚合函数的要么是group by 指定的列不能是一个非聚合非group by 的列,否则查询结果无意义。

(二)指定条件筛选

1、分组前筛选,使用where条件

MySQL数据库(三)_第2张图片

2、分组后筛选,使用having条件

MySQL数据库(三)_第3张图片

3、同时分组前和分组后筛选

三、联合查询(多表查询)

联合查询是将多个表结合起来,列如有表emp、表staff,有如下信息:

MySQL数据库(三)_第4张图片

MySQL数据库(三)_第5张图片

 将该两个表进行笛卡尔积,得到:

MySQL数据库(三)_第6张图片

 此时,列数是两个表的列数之和,行数是两个表的行数之积。

(一)内连接

select *from 表1,表2;

也可以在结合两表时,加一些条件限制表的内容:

select *from 表1,表2 where 条件;

也可以使用join on 表达式,列如:

select *from 表1 join 表2 on 条件;

针对多个表时:

select *from 表1 join 表2 on 条件 join 表3 on 条件;

(二)外连接

可查询数据不是一一对应的若干表,无数据时用null填充

1、左外连接

select *from 表1 left join 表2 on 条件;

以表1为准,表1中所有的数据体现出现

2、右外连接

select *from 表1 right join 表2 on 条件;

以表2为准,表2中所有的数据体现出现

3、外连接多个表

select *from 表1 left/right join 表2 on 条件 left/right join 表3 on 条件;

(三)自连接

自连接就是自己和自己连接,本质就是把行关系转为列关系

自连接需要指定表的别名!!

select *from 表1 as a,表2 as b;

(四)子查询

把多条查询语句合并成一条

列如:

(五)合并查询 union

把两条查询结果合并在一起

select *from 表名 where 条件1 union select *from 表名 where 条件2;

union all 不会去重;    union 会自动去重

四、新增和查询联合

把查询结果作为新增的数据

查询结果的数据类型必须和插入表的数据类型匹配(个数、类型)

insert into 表1(列名,列名..) select 列名,列名.. from 表2;

将表2中的数据复制到表1当中。

也可以写成:

insert into 表1 select *from 表2;

结语

SQL查询中各个关键字的执行先后顺序:

from > on > join > where > group by > with > having > select > distinct > order by > limit

这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位点赞评论收藏⭐,谢谢!!!

你可能感兴趣的:(MySQL,数据库,mysql)