MySQL 函数大赏:聚合、日期、字符串等函数剖析

MySQL 函数大赏:聚合、日期、字符串等函数剖析

MySQL系列


文章目录


前言

MySQL 提供了丰富的内置函数,用于处理数据、执行计算、转换格式等操作,本篇将介绍MySQL中常用的一些函数。
本篇文章内容已操作为主


这里的函数比较简单,不再解释了,再对其解释就有一种强说愁的感觉了

上篇文章:MySQL 数据操作全流程:创建、读取、更新与删除实战

一、聚合函数

这部分函数都比较简单

函数名作用示例结果
SUM(col)求和SUM(amount)所有 amount 的总和
AVG(col)平均值AVG(age)平均年龄
COUNT(col)计数(忽略 NULL)COUNT(id)行数
COUNT(*)计数(包含 NULL)COUNT(*)总行数
MAX(col)最大值MAX(score)最高分数
MIN(col)最小值MIN(price)最低价格

测试表

CREATETABLE students ( id INTUNSIGNEDPRIMARYKEYAUTO_INCREMENT, sn INTNOTNULLUNIQUECOMMENT'学号', name VARCHAR(20)NOTNULL, qq VARCHAR(20));createtable exam_result ( id intunsignedprimarykeyauto_increment, name varchar(20)notnullcomment'同学姓名', chinese floatdefault0.0comment'语文成绩', math floatdefault0.0comment'数学成绩', english floatdefault0.0comment'英语成绩');

表内容

在这里插入图片描述


在这里插入图片描述

本篇文章主要以上面两表做测试,上篇文章中已经创建,这里直接使用

1、统计班级共有多少同学

selectcount(*)from students;
在这里插入图片描述


2、统计班级有多少 qq 号

selectcount(qq)from students;
在这里插入图片描述


对比上表可以看到count函数,对于NULL值,不做统计。

3、统计本次考试的数学成绩分数个数

selectcount(math)from exam_result;
在这里插入图片描述


对比上表可以看到count函数,对于重复值,不做统计。

4、统计数学成绩不及格人数

selectcount(math)from exam_result where math<60;
在这里插入图片描述


count函数可以配合其他语句使用。

5、统计平均总分

selectavg(math+chinese+english) 平均总分 from exam_result ;
在这里插入图片描述

6、返回英语最高分

selectmax(english)from exam_result ;
在这里插入图片描述

7、返回 > 70 分以上的数学最低分

selectmin(math)from exam_result where math >70;
在这里插入图片描述

二、日期函数

在这里插入图片描述

1、获取当前年月日

selectcurrent_date();
在这里插入图片描述


2、获取当前时分秒

selectcurrent_time;
在这里插入图片描述


3、获取时间戳

selectcurrent_timestamp;
在这里插入图片描述


4、在时间中提取日期部分

selectdate(current_timestamp());
在这里插入图片描述


5、在日期的基础上加上日期

select date_add(current_date,interval10day);
在这里插入图片描述


获取当前日期,并在该日期的基础上增加十天

interval后可以根据需要使用不同单位(年、月、日、分、秒)

6、在日期的基础上减去日期

select date_sub(current_date,interval10day);


获取当前日期,并在该日期的基础上减去十天

7、计算两个日期之间相差多少天

select datediff(current_date,'1949-10-01');
在这里插入图片描述


中国成立,距今多少天

8、获取当前日期和时间

selectnow();
在这里插入图片描述

9、测试

//创建一个留言表createtable msg ( id intprimarykeyauto_increment, content varchar(30)notnull, sendtime datetime);//向表中插入测试数据insertinto msg(content,sendtime)values('hello1',now());insertinto msg(content,sendtime)values('hello2',now());select*from msg;

显示所有留言信息,发布日期只显示日期,不用显示时间:

在这里插入图片描述


查询在1分钟内发布的帖子:

在这里插入图片描述


可以看到日期是支持直接比较的

三、字符串函数

函数都可以配合select操作对表中的数据进行操作,这里仅对部分场景做演示

在这里插入图片描述


1、查看字符串的字符集

selectcharset(string); 
在这里插入图片描述

2、要求显示exam_result表中的信息,显示格式:“XXX的语文分:XXX,数学分:XXX,英语分:XXX”

在这里插入图片描述


3、在字符串中查找字符串

select instr(string,substring);

string中查找字符串substring出现的位置,找到返回下标(从1开始),未找到返回0。

当目标字符串重复出现时,返回的时第一次出现的下标

4、字符串转为大写

selectucase(strig);


5、字符串转为小写

selectlcase(string);
在这里插入图片描述


6、从字符串左端提取len个字符

selectleft(string,len);
在这里插入图片描述


6、从字符串右端提取len个字符

selectright(string,len);
在这里插入图片描述

7、求字符串占用的字节数

selecty 
在这里插入图片描述

length()函数在 MySQL 中计算的是字符串的字节长度,而不是字符个数,当前所使用的字符集汉字占三个字节。

8、在字符串中进行字符串的替换 replace

selectreplace(substring,string,str);

substring中查找string,并将其替换为str

在这里插入图片描述

这种替换方式不会影响原表内容,若未找到则不做处理

9、字符串截取 substring

select substring(string,pos,len);


从字符串stringpos处开始,向后截取len个字符。

10、去除字符串中最开始和最后的空格 trim

  • trime:去除字符串两端空格
  • ltrim:去除字符串最左边的空格
  • rtrim:去除字符串右边的
在这里插入图片描述
在保存用户信息数据时,一般先对数据执行去除空格操作。由于网络传输过程可能引入不可见空字符,若直接存储含此类字符的数据,后续用户登录时,比如输入密码因存在空格匹配不上,会引发登录失败问题,且排查难度极大。所以,要先过滤掉字符串中的空格,再将处理后的数据存入数据库,以此规避因隐性空格导致的登录故障

四、数学函数

在这里插入图片描述


1、abs 取绝对值

select abs(N);
在这里插入图片描述


2、bin 转二进制

select bin(N);
在这里插入图片描述


可以看到在对小数,进行二进制转换时,会将小数进行向下取整后再操作。

3、hex 转十六进制

select hex(N);
在这里插入图片描述


4、 conv 进制转换

select conv(N,fromm_base,to_base);

将数字N,从from_base进制 转换成 to_base进制.

在这里插入图片描述


5、format 格式化,保留小数

selectformat(N,D);
在这里插入图片描述

N保留D位小数,处理小数部分遵循四舍五入,若小数部分不够就补0.

6 mod 取模

selectmod(x,y);
在这里插入图片描述


mod返回xy取模的值,这里负数取模的方式大家可以自己尝试。
7、rand生成随机数

select rand();
在这里插入图片描述

生成的数是从 0.0 ~ 1.0,若想要生成指定范围的我们就直接 * 10n即可实现(如 * 10的话就是 0 ~ 10)

8、ceiling 向上取整

select ceiling(N);
在这里插入图片描述


可以看到向上取整,就是当存在小述部分时,去掉小鼠部分直接+1;

9、floor 向下取整

select floor(N);
在这里插入图片描述

五、其他函数

1、查看当前用户 user

selectuser();
在这里插入图片描述


获取当前连接到 MySQL 服务器的用户信息,返回结果的格式为 用户名@主机名'

2、database查看当前数据库

selectdatabase();
在这里插入图片描述


返回当前会话中使用的数据库名称

3、md5 加密
在实际开发中,密码通常不会以明文形式直接存储在数据库中,而 MD5 哈希算法是常用的密码加密方案之一。其核心作用是将原始密码通过加密计算转换为一段固定长度(32 位)的哈希字符串,从而避免明文密码在存储或传输过程中泄露的风险。

在这里插入图片描述


这种加密方式,缺点很多,这个我在网络传输部分已经介绍了,这里就补赘述了。

4、ifnull(val1,val2)

val1NULL 时返回 val2,否则返回 val1 本身

在这里插入图片描述

这次分享就到这里了,本篇涉及函数较多,但都是比较基础的,多加练习可以快速上手,码字不易,三连三连!!!!

Read more

Ubuntu+Docker实战:手把手教你整合MyIP与cpolar实现内网穿透

Ubuntu+Docker实战:手把手教你整合MyIP与cpolar实现内网穿透

文章目录 * 前言 * 1.关于 MyIP * 2.Docker 部署 * 3.MyIP 简单使用 * 4.安装 cpolar 内网穿透 * 5. 配置公网地址 * 6. 配置固定公网地址 * 总结 前言 技术探索者们请注意!我们即将揭晓一项突破性网络技术方案——MyIP 系统!这项创新技术颠覆了传统网络部署模式,即使在缺乏固定公网地址且不依赖云端架构的前提下,您依然能够搭建个性化的 IP 控制体系。借助这一智能平台,用户将获得持续在线的远程操控权限,如同配备了全天候值守的网络运维专家。接下来,我们将详细解析在 Ubuntu 操作系统中实施部署的具体步骤,并融合 cpolar 的内网穿透技术,打造稳定高效的远程连接方案! 1.关于 MyIP MyIP 就是一个集多种网络工具于一身的小能手。它可以帮你查看本地公网 IP、查询任意 IP

By Ne0inhk
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南

在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南

想在Linux系统用Claude Code提升编程效率,却卡在系统适配门槛?想让 AI 助手深度融入 VS Code 开发流程,却不懂插件配置技巧?这篇“保姆级指南”专为你打造,从Claude Code的Linux 环境搭建到通过本地VS Code SSH远程访问服务器端Claude Code的无缝集成,每一步都配清晰操作说明,新手也能轻松上手。 本文有两个部分(干货满满!): 1. Linux安装Claude Code 2. 使用本机VS Code SSH远程访问服务器端Claude Code帮助AI编程 一、Linux安装Claude Code 1、安装必要工具 1.1 Linux端安装Node.js和Git         Node.js提供运行环境,支持 Claude Code 的 JavaScript 代码执行;Git 用于获取其代码仓库或管理版本依赖。

By Ne0inhk
Flutter 组件 mek_data_class_generator 的鸿蒙化适配实战 - 驾驭核心数据防腐大厂,实现 OpenHarmony 业务模型的不可变性与零污染自动化生成

Flutter 组件 mek_data_class_generator 的鸿蒙化适配实战 - 驾驭核心数据防腐大厂,实现 OpenHarmony 业务模型的不可变性与零污染自动化生成

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 mek_data_class_generator 的鸿蒙化适配实战 - 驾驭核心数据防腐大厂,实现 OpenHarmony 业务模型的不可变性与零污染自动化生成 前言 在鸿蒙(OpenHarmony)生态全力出海的背景下,无论是车载系统、医疗平板还是重型工控终端,其核心业务逻辑的复杂度正呈指数级增长。作为架构师,我们在处理诸如 0308 批次的员工打卡模型、医院监控大宽表等数据实体流转时,最头疼的莫过于人手编写那些冗长的 copyWith、operator == 和 hashCode。 靠人手去维护这些“防手残”的基础逻辑,不仅极其枯燥,更容易引发致命的业务空隙。一旦你在给实体类加字段时忘了更新 hashCode 的对比规则,在分布式流转中就会产生难以察觉的对象识别错误。mek_data_class_generator 正是为了终结这种低级错误而生的“代码冷血机器”。它通过自动化生成线,

By Ne0inhk
【OpenClaw从入门到精通】:环境搭建全攻略——Windows/macOS/Linux三平台部署指南(2026实测)

【OpenClaw从入门到精通】:环境搭建全攻略——Windows/macOS/Linux三平台部署指南(2026实测)

【OpenClaw从入门到精通】:环境搭建全攻略——Windows/macOS/Linux三平台部署指南(2026实测) 引言 环境搭建是使用OpenClaw的第一步,也是确保系统稳定运行的基础。不同操作系统和环境配置可能会影响OpenClaw的性能和功能表现。本文将详细介绍在Windows、macOS和Linux三大主流平台上的OpenClaw部署方法,包括最佳实践、常见问题和解决方案。 通过本文的指导,你将能够根据自己使用的操作系统选择最适合的部署方案,确保OpenClaw在你的环境中稳定高效运行。 系统要求 通用要求 * Node.js: >= 22.0.0 * 内存: 最少8GB,推荐16GB以上 * 存储: 至少10GB可用空间 * 网络: 稳定的互联网连接 平台特定要求 Windows平台 * 操作系统: Windows 10 (1903+) 或 Windows 11 * 内存: 最少8GB,推荐16GB *

By Ne0inhk