MySQL初学之旅(5)详解查询

MySQL初学之旅(5)详解查询

目录

1.前言

2.正文

2.1聚合查询

2.1.1count()

2.1.2sum()

2.1.3avg()

2.1.4max()

2.1.5min()

2.1.6总结

2.2分组查询

2.2.1group by字句

2.2.2having字句

2.2.3group by与having的关系

2.3联合查询

2.3.1笛卡尔积

2.3.2内连接

2.3.3外连接

2.3.4自连接

2.3.5子查询

3.小结


1.前言

哈喽大家好吖,今天继续给大家分享MySQL的学习——查询的详解,本篇也是干货多多语法与示例讲解都很详细,希望大家耐心学习哦,那么话不多说让我们开始吧。

2.正文

2.1聚合查询

聚合查询当然离不开许多聚合函数的使用,常常用于对数据进行分组并计算每个组的汇总值,通常在分析、统计数据时非常有用。以下是 MySQL 中常用的聚合函数的详细解释:


聚合查询本质上是针对数据表中的行和行进行运算

2.1.1count()

功能: 计算某列中非空值的行数或计算所有行数。

COUNT(*): 计算所有行的数量,包括 NULL 值。COUNT(column_name): 只计算非 NULL 的行数。COUNT(DISTINCT column_name): 计算不同值的行数。 

2.1.2sum()

功能: 计算某列中所有值的总和。



虽然说我们知道当一个数和NULL相加时也会变成NULL,那么这里为什么仍有结果呢,显然在实际应用中,如果我们使用这一个函数显然不是为了仅仅排查这张表中是否有NULL而无法计算出结果,所以这个函数的调用NULL值不影响。适用于数值类型的列,会忽略 NULL

2.1.3avg()

功能: 计算某列值的平均值。

适用于数值类型的列,会忽略 NULL 值。

2.1.4max()

功能: 返回某列中的最大值。

适用于数值、日期或字符串类型的列,会忽略 NULL 值。

2.1.5min()

功能: 返回某列中的最小值。

适用于数值、日期或字符串类型的列,会忽略 NULL 值。

2.1.6总结

这里让我们总结一下:

函数功能
COUNT()计算某列中的行数
SUM()     计算某列值的总和
AVG()计算某列值的平均值
MAX()返回某列中的最大值
MIN()返回某列中的最小值

2.2分组查询

分组查询是 MySQL 中通过对数据进行分组并对每组数据执行聚合操作的一种查询方式。其中GROUP BYHAVING 是 MySQL 中用于分组查询的重要字句,常与聚合函数(上文所提)结合使用。以下详细介绍其功能、语法规则和用法。


2.2.1group by字句

功能:GROUP BY 用于将查询结果按照一个或多个列的值进行分组,并对每组数据执行聚合运算。



使用说明:column1, column2 是分组依据的列。聚合函数(如 SUMCOUNTAVG)在分组的基础上对每组数据进行统计。

下面给一个实例方便大家理解:

假设我们现在要统计所有部门不同职位的员工数量,按照这个语句就会给出新表展示结果,下面是调试代码:

运行结果:


2.2.2having字句

功能:HAVING 用于过滤分组后的结果,通常结合聚合函数使用,与 WHERE 的区别在于,HAVING 作用于分组后的聚合数据,而 WHERE 作用于分组前的原始数据。



使用说明:HAVING 接收的条件通常涉及聚合函数。如果仅对分组前的数据筛选,使用 WHERE;如果需要对分组结果筛选,则使用 HAVING

还是上文的背景,如果我们只想保留员工数量等于2的部门呢,代码如下:

结果:


2.2.3group by与having的关系

GROUP BY 是分组操作的核心:先对数据按照分组条件整理为若干组,每组作为一个单位。HAVING 是对分组结果的过滤:只保留符合条件的分组结果。

2.3联合查询

在 MySQL 中,联合查询用于将多个表中的数据结合在一起。联合查询通过某种条件将多个表中的行合并成单个结果集。以下详细介绍其功能、语法规则和用法。


2.3.1笛卡尔积

笛卡尔积就是将表中每行与其他表的行进行全排列。



借用上一背景,这里给出示例:

运行结果:




2.3.2内连接

INNER JOIN 是最常用的联合查询类型之一。它用于从多个表中返回那些满足连接条件的行。INNER JOIN 只会返回两个表中 匹配 的行,如果在其中一个表中没有匹配的记录,则这些记录将不会出现在最终的结果中。



解释:table1table2:要连接的两个表。column_name(s):需要返回的列。INNER JOIN:表示进行内连接操作。ON table1.column_name = table2.column_name:连接条件,定义两个表如何关联。通常是根据两表中的某些相同字段(如外键)来建立关联。

继续按照上文背景给出调试案例:

结果:


2.3.3外连接

外连接(Outer Join)是 SQL 中用于返回两张或多张表中符合条件的记录以及一张表中不符合条件的记录的查询操作。外连接的关键特点是:即使某一表中的记录在另一个表中没有匹配的记录,外连接也会返回该表中的记录,未匹配的部分会填充为 NULL



join 左侧的表完全显示我们就说是左外连接,join右侧的表完全显示我们就说是右外连接。

代码示例:

运行结果:


2.3.4自连接

自连接(Self Join) 是一种特殊类型的连接,它是指在同一个表内进行连接。也就是说,表与表本身连接,从而允许你从同一表中获取不同的记录。自连接常用于查找与同一表中其他记录相关的信息,尤其是在树形结构或层级关系的数据中非常有用,但是必须要对表进行起不同的别名。

table1:是需要进行自连接的表。t1t2:表 table1 的两个别名,用来区分连接的两个实例。ON t1.column = t2.column:连接条件,通常是某些字段的匹配。

代码示例:


2.3.5子查询

子查询(Subquery)是指在一个 SQL 查询中嵌套另一个查询。子查询通常用于在主查询中执行某些计算或获取某些条件,以便用于主查询的筛选或操作。

子查询一般由两个部分组成:外部查询(主查询):是执行最终数据检索的查询。内部查询(子查询):嵌套在外部查询中的查询,它返回一个结果集,可以作为外部查询的条件。

单行子查询:



多行子查询:

in关键字:



where关键字:

条件括号与返回值一一进行比较。



exists关键字:

若查询语句结果为空则不执行,反之不为空执行。EXISTS 子查询检查是否存在与外部查询的 department_id 匹配的部门。如果存在,外部查询就会返回该员工的 employee_name



from关键字:内部查询 (SELECT department_id, salary FROM employees) 返回 employees 表的部门和薪资数据。该查询结果作为虚拟表 temp 被外部查询使用,后者对每个部门计算平均薪资。


3.小结

今天的分享到这里就结束了,喜欢的小伙伴不要忘记点点赞点个关注,你的鼓励就是对我最大的支持,加油!

Read more

10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

10分钟打造专属AI助手!ToDesk云电脑/顺网云/海马云操作DeepSeek哪家强?

文章目录 * 一、引言 * 云计算平台概览 * ToDesk云电脑:随时随地用上高性能电脑 * 二 .云电脑初体验 * DeekSeek介绍 * 版本参数与特点 * 任务类型表现 * 1、ToDesk云电脑 * 2、顺网云电脑 * 3、海马云电脑 * 三、DeekSeek本地化实操和AIGC应用 * 1. ToDesk云电脑 * 2. 海马云电脑 * 3、顺网云电脑 * 四、结语 * 总结:云电脑如何选择? 一、引言 DeepSeek这些大模型让 AI 开发变得越来越有趣,但真要跑起来,可没那么简单! * 本地配置太麻烦:显卡不够、驱动难装、环境冲突,光是折腾这些就让人心态崩了。 * 云端性能参差不齐:选错云电脑,可能卡到爆、加载慢,还容易掉线,搞得效率直线下降。 * 成本难控:有的平台按小时计费,价格一会儿一个样,

By Ne0inhk
解锁DeepSeek潜能:Docker+Ollama打造本地大模型部署新范式

解锁DeepSeek潜能:Docker+Ollama打造本地大模型部署新范式

🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Docker 2、什么是Ollama 二、准备工作 1、操作系统 2、镜像准备 三、安装 1、安装Docker 2、启动Ollama 3、拉取Deepseek大模型 4、启动Deepseek  一、引言 1、什么是Docker Docker:就像一个“打包好的App” 想象一下,你写了一个很棒的程序,在自己的电脑上运行得很好。但当你把它发给别人,可能会遇到各种问题: * “这个软件需要 Python 3.8,但我只有 Python 3.6!

By Ne0inhk
深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

前引:屏幕前的你还在AI智能搜索框这样搜索吗?“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” ,。看到此篇文章的小伙伴们!请准备好你的思维魔杖,开启【霍格沃茨模式】,看我如何更新秘密的【知识炼金术】,我们一起来解锁更加刺激的剧情!友情提醒:《《《前方高能》》》 目录 在哪使用DeepSeek 如何对提需求  隐藏玩法总结 几个高阶提示词 职场打工人 自媒体创作 电商实战 程序员开挂 非适用场地 “服务器繁忙”如何解决 (1)硅基流动平台 (2)Chatbox + API集成方案 (3)各大云平台 搭建个人知识库 前置准备 下载安装AnythingLLM 选择DeepSeek作为AI提供商 创作工作区 导入文档 编辑  编辑 小编寄语 ——————————————————————————————————————————— 在哪使用DeepSeek 我们解锁剧情前,肯定要知道在哪用DeepSeek!咯,为了照顾一些萌新朋友,它的下载方式我放在下面了,拿走不谢!  (1)

By Ne0inhk
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek + 通义万相制作AI视频流程 4.1 DeepSeek + 通义万相制作视频优势 4.1.1 DeepSeek 优势 4.1.2 通义万相视频生成优势 4.2

By Ne0inhk