MySQL数据库(三)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL数据库(三)

前言

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


目录

前言

一、聚合查询

(一)聚合函数

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

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
14天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
8天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
567 211
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
228 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
800 59
|
6天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1117 157
|
6天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
479 109