MySQL聚合、日期、字符串等函数深度剖析

 更新时间:2026年01月04日 11:16:50   作者:什么半岛铁盒  
本文介绍了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)最低价格

测试表

CREATE TABLE students (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sn INT NOT NULL UNIQUE COMMENT '学号',
name VARCHAR(20) NOT NULL,
qq VARCHAR(20)
);

create table exam_result (
id int unsigned primary key auto_increment,
name varchar(20) not null comment '同学姓名',
chinese float default 0.0 comment '语文成绩',
math float default 0.0 comment '数学成绩',
english float default 0.0 comment '英语成绩'
);

表内容

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

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

select count(*) from students;

2、统计班级有多少 qq 号

select count(qq) from students;

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

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

select count(math) from exam_result;

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

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

select count(math) from exam_result where math<60;

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

5、统计平均总分

select avg(math+chinese+english) 平均总分 from exam_result ;

6、返回英语最高分

select max(english)  from exam_result ;

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

select min(math)  from exam_result where math >70;

二、日期函数

1、获取当前年月日

select current_date();

2、获取当前时分秒

select current_time;

3、获取时间戳

select current_timestamp;

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

select date(current_timestamp());

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

select date_add(current_date,interval 10 day);

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

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

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

select date_sub(current_date,interval 10 day);

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

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

select datediff(current_date,'1949-10-01');

中国成立,距今多少天

8、获取当前日期和时间

select now();

9、测试

//创建一个留言表
create table msg (
id int primary key auto_increment,
content varchar(30) not null,
sendtime datetime
);
//向表中插入测试数据
insert into msg(content,sendtime) values('hello1', now());
insert into msg(content,sendtime) values('hello2', now());
select * from msg;

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

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

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

三、字符串函数

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

1、查看字符串的字符集

select charset(string);

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

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

select instr(string,substring);

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

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

4、字符串转为大写

select ucase(strig);

5、字符串转为小写

select lcase(string);

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

select left(string,len);

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

select right(string,len);

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

selecty

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

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

select replace(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 格式化,保留小数

select format(N,D);

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

6 mod 取模

select mod(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

select user();

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

2、database查看当前数据库

select database();

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

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

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

4、ifnull(val1,val2)

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

到此这篇关于MySQL聚合、日期、字符串等函数深度剖析的文章就介绍到这了,更多相关mysql聚合日期字符串函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在 MySQL 中快速的复制一张表包括表结构和数据

    在 MySQL 中快速的复制一张表包括表结构和数据

    文章介绍了四种复制MySQL表的方法,包括CREATE TABLE...SELECT、CREATE TABLE...LIKE...INSERT、mysqldump工具和物理文件复制,每种方法都有其适用场景和优缺点,面试时,应根据表的大小、结构完整性、效率和适用场景选择合适的方法,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • mysql实现查询数据并根据条件更新到另一张表的方法示例

    mysql实现查询数据并根据条件更新到另一张表的方法示例

    这篇文章主要介绍了mysql实现查询数据并根据条件更新到另一张表的方法,结合实例形式分析了mysql多表关联查询、更新等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • MySQL中的存储引擎使用解读

    MySQL中的存储引擎使用解读

    文章简述MySQL架构四层:连接层处理通信,服务层执行SQL及优化,引擎层负责数据存储,存储层管理底层文件,主要对比InnoDB(支持事务、行锁)、MyISAM(表锁、读写分离)和Memory(内存存储、临时表),并给出适用场景选择建议
    2025-08-08
  • MySQL数据库如何给表设置约束详解

    MySQL数据库如何给表设置约束详解

    约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除,本篇文章教你如何给表设置约束
    2022-03-03
  • MySQL中的TRUNCATE TABLE命令的使用

    MySQL中的TRUNCATE TABLE命令的使用

    TRUNCATE TABLE命令是一个用于快速删除表中所有数据的重要工具,本文介绍了MySQL中的TRUNCATE TABLE命令的用法、工作原理以及实际应用中的注意事项,感兴趣的可以了解一下
    2024-08-08
  • MySQL Binlog 日志监听与 Spring 集成实战场景

    MySQL Binlog 日志监听与 Spring 集成实战场景

    MySQL 的二进制日志(binlog)有三种常见的格式:Statement 模式、Row 模式和Mixed 模式,这篇文章主要介绍了MySQL Binlog 日志监听与 Spring 集成实战,需要的朋友可以参考下
    2024-12-12
  • 浅谈MySQL分页Limit的性能问题

    浅谈MySQL分页Limit的性能问题

    这篇文章主要介绍了浅谈MySQL分页Limit的性能问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • MySQL约束和表的复杂查询操作大全

    MySQL约束和表的复杂查询操作大全

    约束是关系型数据库的一个重要功能, 添加到库中的数据需要保证其的正确性; 约束, 就是让数据库帮助程序员更好的检查数据是否正确.,这篇文章主要介绍了MySQL约束和表的复杂查询操作,需要的朋友可以参考下
    2022-11-11
  • 从创建数据库到存储过程与用户自定义函数的小感

    从创建数据库到存储过程与用户自定义函数的小感

    从创建数据库到存储过程与用户自定义函数的小感,深入的学习mysql
    2011-09-09
  • MySQL MHA集群详解(数据库高可用)

    MySQL MHA集群详解(数据库高可用)

    MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本文介绍MySQL MHA集群(数据库高可用)的相关知识,感兴趣的朋友跟随小编一起看看吧
    2025-11-11

最新评论