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

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

列如:

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

(二)指定条件筛选

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

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

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

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

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

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

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

(一)内连接

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

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

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y君的进化史

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值