【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
以耳倾听世间繁华,以语表达心中所想
大家好,我是whisperrrr.
前言:
大家好,我是你们的朋友whisrrr。在日常工作中,MySQL作为一款广泛使用的开源关系型数据库,其强大的功能为我们提供了便捷的数据存储和管理手段。而在使用MySQL的过程中,掌握一些常用函数对于提高数据库操作效率具有重要意义。
本文将围绕以下几个方面进行讲解:合计函数,字符串函数、数学函数、日期和时间函数等。相信通过学习这些常用函数,你会对MySQL有更深入的了解,为今后的数据库操作打下坚实基础。
文章目录
-
- 一.合计函数/统计
-
- ①Count函数
- ②Sum函数
- ③Avg函数
- ④Max/Min函数
- ⑤group by
- ⑥having
- 二.字符串函数
-
- ①charset(str)函数
- ②concat(str1,str2,…)函数
- ③instr(string,substring)
- ④ucase(string2)函数/lcase(string)
- ⑤left(string2,length)函数
- ⑥length(string)函数
- ⑦replace(str,子串,另一个字符串)函数
- ⑧strcmp(string1,string2)函数
- ⑨substr(str,start,len)函数
- ⑩trim(string)函数
- ?函数案列演示
- 三.数学函数
- 四.日期函数
-
- ①日期格式
- ②补充时间格式符含义表
- ③current_data()
- ④current_time()
- ⑤current_timestramp()
- ⑥date_add(日期,interval num 时间)函数
- ⑦datadiff(unit,start_date,end_date)函数
- ⑧now()函数
- ⑨last_day()函数
- ⑩获取日期和时间中的年、月、日、时、分、秒
- 五.加密函数
-
- ①md5(str)函数
- ②password(str)函数
- 六.流程控制函数
-
- ①IF(expr1,expr2,expr3)
- ②IFNULL(expr1,expr2)
- ③SELECT CASE WHEN expr1 THEN expr2 WHEN expr3 THEN expr4 ELSE expr5 END
一.合计函数/统计
①Count函数
返回要查询的结果一共有多少行
演示如下:
select count(*) | count(列名) from table_name [where where_definition];
count(*) :统计返回条件的记录行数.
count(列):返回满足条件的某列有多少个,但是会排除为null的列.
②Sum函数
放回满足where条件的列的和,一般使用在数值列;
演示如下:
select sum(列名) from table_name [where where_definition];
③Avg函数
返回满足where条件的列的平均值,一般使用在数组列。
演示如下:
select avg(列名) from table_name [where where_definition];
④Max/Min函数
返回满足where条件的一列的最大值/最小值.
演示如下:
select Max(列名) | Min(列名) from table_name [where where_definition];
⑤group by
使用 group by 对字句进行分组

⑥having
使用 having 子句对分组后的结果进行过滤, group by 和 having 结合使用.

分组查询案例:

# 演示 group by + having
-- having 子句用于限制分组显示结果.
-- 如何显示每个部门的平均工资和最高工资
-- 分析: avg(sal) max(sal)
-- 按照部分来分组查询
SELECT AVG(sal), MAX(sal) , deptnoFROM emp GROUP BY deptno; -- 使用数学方法,对小数点进行处理
SELECT FORMAT(AVG(sal),2), MAX(sal) , deptnoFROM emp GROUP BY deptno;
-- 显示每个部门的每种岗位的平均工资和最低工资
-- 分析 1. 显示每个部门的平均工资和最低工资
-- 2. 显示每个部门的每种岗位的平均工资和最低工资
SELECT AVG(sal), MIN(sal) , deptno, jobFROM emp GROUP BY deptno, job;
-- 显示平均工资低于 2000 的部门号和它的平均工资 // 别名
-- 分析 [写 sql 语句的思路是化繁为简,各个击破]
-- 1. 显示各个部门的平均工资和部门号
-- 2. 在 1 的结果基础上,进行过滤,保留 AVG(sal) < 2000
-- 3. 使用别名进行过滤
SELECT AVG(sal), deptnoFROM emp GROUP BY deptnoHAVING AVG(sal) < 2000;
-- 使用别名
SELECT AVG(sal) AS avg_sal, deptnoFROM emp GROUP BY deptnoHAVING avg_sal < 2000;
二.字符串函数
接下来,跟随笔者,我们学习一下常用的字符串函数

①charset(str)函数
返回字串字符集
②concat(str1,str2,…)函数
将字符串拼接,通过输入的参数str1、str2等,将他们拼接成一个字符串。
③instr(string,substring)
返回substring,在string中出现的位置,没有的话返回0
④ucase(string2)函数/lcase(string)
将字符串转为大写/将字符串转为小写.
⑤left(string2,length)函数
从string2中的左边取出length个字符
⑥length(string)函数
获取参数值的字节个数
对于utf-8字符集来说,一个英文占1个字节;一个中文占3个字节;
对于gbk字符集来说,一个英文占1个字节;一个中文占2个字节;
⑦replace(str,子串,另一个字符串)函数
将字符串str中的字串,替换为另一个字符串
⑧strcmp(string1,string2)函数
比较字符串的大小,如果一样,返回0;前大后小放回1;前小后大返回-1.
⑨substr(str,start,len)函数
str为输入字符串,从start位置开始截取字符串,len表示要截取的长度; 没有指定len长度:表示从start开始起,截取到字符串末尾。指定了len长度:表示从start开始起,截取len个长度。
⑩trim(string)函数
去掉字符串前后的空格; 该函数只能去掉字符串前后的空格,不能去掉字符串中间的空格。
函数案列演示
-- CHARSET(str) 返回字串字符集
SELECT CHARSET(ename) FROM emp;
-- CONCAT (string2 [,... ]) 连接字串, 将多个列拼接成一列
SELECT CONCAT(ename, ' 工作是 ', job) FROM emp;
-- INSTR (string ,substring ) 返回 substring 在 string 中出现的位置,没有返回 0
-- dual 亚元表, 系统表 可以作为测试表使用
SELECT INSTR('hanshunping', 'ping') FROM DUAL;
-- UCASE (string2 ) 转换成大写
SELECT UCASE(ename) FROM emp;
-- LCASE (string2 ) 转换成小写
SELECT LCASE(ename) FROM emp;
-- LEFT (string2 ,length )从 string2 中的左边起取 length 个字符
-- RIGHT (string2 ,length ) 从 string2 中的右边起取 length 个字符
SELECT LEFT(ename, 2) FROM emp; -
- LENGTH (string )string 长度[按照字节]
SELECT LENGTH(ename) FROM emp;
-- REPLACE (str ,search_str ,replace_str )
-- 在 str 中用 replace_str 替换 search_str
-- 如果是 manager 就替换成 经理
SELECT ename, REPLACE(job,'MANAGER', '经理') FROM emp;
-- STRCMP (string1 ,string2 ) 逐字符比较两字串大小
SELECT STRCMP('hsp', 'hsp') FROM DUAL; -- SUBSTRING (str , position [,length ])
-- 从 str 的 position 开始【从 1 开始计算】,取 length 个字符
-- 从 ename 列的第一个位置开始取出 2 个字符
SELECT SUBSTRING(ename, 1, 2) FROM emp; -- LTRIM (string2 ) RTRIM (string2 ) TRIM(string)
-- 去除前端空格或后端空格
SELECT LTRIM(' 零基础学Mysql') FROM DUAL;
SELECT RTRIM('零基础学Mysq ') FROM DUAL;
SELECT TRIM(' 零基础学Mysq ') FROM DUAL;
三.数学函数

-- 演示数学相关函数
-- ABS(num) 绝对值
SELECT ABS(-10) FROM DUAL;
-- BIN (decimal_number )十进制转二进制
SELECT BIN(10) FROM DUAL;
-- CEILING (number2 ) 向上取整, 得到比 num2 大的最小整数
SELECT CEILING(-1.1) FROM DUAL;
-- CONV(number2,from_base,to_base) 进制转换
-- 下面的含义是 8 是十进制的 8, 转成 2 进制输出
SELECT CONV(8, 10, 2) FROM DUAL;
-- 下面的含义是 8 是 16 进制的 8, 转成 2 进制输出
SELECT CONV(16, 16, 10) FROM DUAL;
-- FLOOR (number2 ) 向下取整,得到比 num2 小的最大整数
SELECT FLOOR(-1.1) FROM DUAL;
-- FORMAT (number,decimal_places ) 保留小数位数(四舍五入)
SELECT FORMAT(78.125458,2) FROM DUAL;
-- HEX (DecimalNumber ) 转十六进制
-- LEAST (number , number2 [,..]) 求最小值
SELECT LEAST(0,1, -10, 4) FROM DUAL;
-- MOD (numerator ,denominator ) 求余
SELECT MOD(10, 3) FROM DUAL;
-- RAND([seed]) RAND([seed]) 返回随机数 其范围为 0 ≤ v ≤ 1.0
-- 说明
-- 1. 如果使用 rand() 每次返回不同的随机数 ,在 0 ≤ v ≤ 1.0
-- 2. 如果使用 rand(seed) 返回随机数, 范围 0 ≤ v ≤ 1.0, 如果 seed 不变,
-- 该随机数也不变了
SELECT RAND() FROM DUAL;
四.日期函数
日期的含义:指的是我们常说的年、月、日。
时间的含义:指的是我们常说的时、分、秒。
year:年份、month:月份、day:天、hour:小时、minute 分钟、second:秒、microsecond:微秒、week:周数、quarter:季度

①日期格式
DATE_FORMAT("20000101", '%Y-%m-%d') -- 2020-01-01
DATE_FORMAT("2000-01-01", '%Y-%m-%d') -- 2020-01-01
DATE_FORMAT('2000-05-07 05:06:07', '%H:%i:%s') -- 05:06:07 (24小时制)
DATE_FORMAT('2000-05-07 05:06:07', '%h:%i:%s') -- 05:06:07 (12小时制)
DATE_FORMAT('2000-05-07 05:06:07', '%Y-%m-%d %H:%i:%s') -- 2000-05-07 05:06:07
②补充时间格式符含义表
序号
格式符
含义
1
%Y
四位的年份
2
%y
2位的年份
3
%m
月份(01,02,…11,12)
4
%c
月份(1,2,3…11,12)
5
%d
日(01,02,…)
6
%H
小时(24小时)
7
%h
小时(12小时)
8
%i
分钟(00,01,…59)
9
%s
秒(00,01,…59)
③current_data()
该函数返回当前日期
演示案例:
-- CURRENT_DATE ( ) 当前日期
SELECT CURRENT_DATE() FROM DUAL;
④current_time()
该函数返回当前时间
演示案例:
-- CURRENT_DATE ( ) 当前日期
SELECT CURRENT_time() FROM DUAL;
⑤current_timestramp()
该函数返回当前时间戳
演示案例:
-- CURRENT_DATE ( ) 当前日期
SELECT CURRENT_TIMESTAMP() FROM DUAL;
⑥date_add(日期,interval num 时间)函数
向前、向后偏移日期和时间,正号为向后,负号为向前,除此之外还有hour(小时),minute(分钟),second(秒)
演示案例:
select data_add(now(),interval 1 year) from dual;
⑦datadiff(unit,start_date,end_date)函数
返回两个时间相差的天数
演示案例:
SELECT DATEDIFF('2011-11-11', '1990-01-01') FROM DUAL;
⑧now()函数
返回当前系统的日期和时间
演示如下:
select now() as 当前时间 from dual;
⑨last_day()函数
提取某个月最后一天的日期
SELECT last_day(now()) FROM DUAL;
⑩获取日期和时间中的年、月、日、时、分、秒
获取年份:year()
获取月份:month()
获取日:day()
获取小时:hour()
获取分钟:minute()
获取秒数:second()
演示案例:
SELECT YEAR(NOW()) FROM DUAL;
SELECT MONTH(NOW()) FROM DUAL;
SELECT DAY(NOW()) FROM DUAL;
SELECT MONTH('2013-11-10') FROM DUAL;
五.加密函数
①md5(str)函数
对密码进行加密
演示案例:
select MD5('12345') from dual;
结果:

②password(str)函数
从原文密码str计算并返回密码字符串,通常用于对mysql数据库的用户密码进行加密
演示案例:
select password('12345') from dual;
结果:

六.流程控制函数

对于以上问题,我们引入流程控制函数.
①IF(expr1,expr2,expr3)
如果 expr1 为 True ,则返回 expr2 否则返回 expr3
SELECT IF(TRUE, '北京', '上海') FROM DUAL;
②IFNULL(expr1,expr2)
如果 expr1 不为空 NULL,则返回 expr1,否则返回 expr2
SELECT IFNULL( NULL, '零基础学mysql') FROM DUAL;
③SELECT CASE WHEN expr1 THEN expr2 WHEN expr3 THEN expr4 ELSE expr5 END
[类似多重分支.]
如果 expr1 为 TRUE,则返回 expr2,如果 expr2 为 t, 返回 expr4, 否则返回 expr5
结尾:
通过本文的介绍,相信大家对MySQL常用函数有了更加全面的了解。掌握这些函数,不仅能够提高我们的工作效率,还能使我们的数据库操作更加灵活。当然,MySQL的函数远不止本文所提到的这些,大家在日常学习和工作中,还需不断探索和积累。
希望这篇文章能为你带来帮助,如有疑问或建议,欢迎在评论区留言交流。最后,感谢大家的阅读,祝大家技能不断提升,工作顺利!
以耳倾听世间繁华,以语表达心中所想
感谢友友们的阅读,咱们下期再见
相关文章:
【零基础学Mysql】常用函数讲解,提升数据操作效率的利器
以耳倾听世间繁华,以语表达心中所想 大家好,我是whisperrrr. 前言: 大家好,我是你们的朋友whisrrr。在日常工作中,MySQL作为一款广泛使用的开源关系型数据库,其强大的功能为我们提供了便捷的数据存储和管理手段。而在…...
防火墙安全综合实验
防火墙安全综合实验 一、拓扑信息 二、需求及配置 实验步骤 需求一:根据下表,完成相关配置 设备接口VLAN接口类型SW2GE0/0/2VLAN 10AccessGE0/0/3VLAN 20AccessGE0/0/1VLAN List:10 20Trunk 1、创建vlan10和vlan20 2、将接口划分到对应…...
在Linux上创建虚拟网卡
在 Linux 上创建虚拟网卡可以通过多种方式进行,常见的方式是使用 ip 命令来配置虚拟网卡。以下是一个简单的步骤指南,用于创建虚拟网卡: 步骤 1: 查看现有的网络接口 首先,查看当前网络接口的状态,可以使用以下命令&…...
AWS Savings Plans 监控与分析工具使用指南
一、背景介绍 1.1 什么是 Savings Plans? AWS Savings Plans 是一种灵活的定价模式,通过承诺持续使用一定金额的 AWS 服务来获得折扣价格。它可以帮助用户降低 AWS 使用成本,适用于 EC2、Fargate 和 Lambda 等服务。 1.2 为什么需要监控? 优化成本支出跟踪使用情况评估投…...
中国通信企业协会通信网络安全服务能力评定安全设计与集成服务能力评定三级要求准则...
安全设计与集成服务能力三级是通信网络安全服务能力评定安全设计与集成服务能力评定的最高等级,所需的要求也会更加严苛,不仅要满足安全设计与集成服务二级能力要求的所有条款,还要满足以下要求: 规模与资产要求 1)单位正规编制员…...
github - 使用
注册账户以及创建仓库 要想使用github第一步当然是注册github账号了, github官网地址:https://github.com/。 之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。 Git…...
RabbitMQ 消息顺序性保证
方式一:Consumer设置exclusive 注意条件 作用于basic.consume不支持quorum queue 当同时有A、B两个消费者调用basic.consume方法消费,并将exclusive设置为true时,第二个消费者会抛出异常: com.rabbitmq.client.AlreadyClosedEx…...
DeepSeek R1 简单指南:架构、训练、本地部署和硬件要求
DeepSeek R1 简单指南:架构、训练、本地部署和硬件要求 DeepSeek 的 LLM 推理新方法 DeepSeek 推出了一种创新方法,通过强化学习 (RL) 来提高大型语言模型 (LLM) 的推理能力,其最新论文 DeepSeek-R1 对此进行了详细介绍。这项研究代表了我们…...
1.攻防世界 unserialize3(wakeup()魔术方法、反序列化工作原理)
进入题目页面如下 直接开审 <?php // 定义一个名为 xctf 的类 class xctf {// 声明一个公共属性 $flag,初始值为字符串 111public $flag 111;// 定义一个魔术方法 __wakeup()// 当对象被反序列化时,__wakeup() 方法会自动调用public function __wa…...
麒麟系统编译安装git
有些版本的麒麟系统上没有git,官网又找不到现成的安装包,只好下载编译进行编译安装 1、下载源码 下载源码,地址:https://git-scm.com/downloads/linux。 2、解压 直接鼠标右键解压,或者用命令行: tar …...
Web - CSS3过渡与动画
过渡 基本使用 transition过渡属性是css3浓墨重彩的特性,过渡可以为一个元素在不同样式之间变化自动添加补间动画。 过渡从kIE10开始兼容,移动端兼容良好,网页上的动画特效基本都是由JavaScript定时器实现的,现在逐步改为css3过…...
Git 常见错误与解决方案全指南
🚀 Git 常见错误与解决方案全指南 这份指南涵盖了你在 Git 操作过程中遇到的所有常见错误、问题及其对应的解决方案,确保你在日常开发中能够快速定位问题并高效解决。 🔗 1. 如何将本地项目上传到 GitHub 仓库? 步骤:…...
OpenStack四种创建虚拟机的方式
实例(Instances)是在云内部运行的虚拟机。您可以从以下来源启动实例: 一、上传到镜像服务的镜像(Image) 使用已上传到镜像服务的镜像来启动实例。 二、复制到持久化卷的镜像(Volume) 使用已…...
线上hbase rs 读写请求个数指标重置问题分析
问题描述: 客户想通过调用hbase的jmx接口获取hbase的读写请求个数,以此来分析HBase读写请求每日增量。 但是发现生产,测试多个集群,Hbase服务指标regionserver读写请求个数存在突然下降到0或者大幅度下降情况。 需要排查原因: 某个Region的读写请求数:会发现经常会重置为…...
【R语言】卡方检验
一、定义 卡方检验是用来检验样本观测次数与理论或总体次数之间差异性的推断性统计方法,其原理是比较观测值与理论值之间的差异。两者之间的差异越小,检验的结果越不容易达到显著水平;反之,检验结果越可能达到显著水平。 二、用…...
2025.2.9机器学习笔记:PINN文献阅读
2025.2.9周报 文献阅读题目信息摘要Abstract创新点网络架构实验结论缺点以及后续展望 文献阅读 题目信息 题目: GPT-PINN:Generative Pre-Trained Physics-Informed Neural Networks toward non-intrusive Meta-learning of parametric PDEs期刊: Fini…...
c语言:取绝对值
假设我们有一个 long 类型的变量 l,我们希望恢复其绝对值。以下是两种方法的对比: 方法1:使用条件语句 这个很好理解,负数时取负运算 ,用于数值的符号反转。 long abs_value(long l) {if (l < 0) {return -l;} e…...
JVM(Java 虚拟机)
Java语言的解释性和编译性(通过JVM 的执行引擎) Java 代码(.java 文件)要先使用 javac 编译器编译为 .class 文件(字节码),紧接着再通过JVM 的执行引擎(Execution Engine)…...
利用二分法进行 SQL 盲注
什么是sql注入? SQL 注入(SQL Injection)是一种常见的 Web 安全漏洞,攻击者可以通过构造恶意 SQL 语句来访问数据库中的敏感信息。在某些情况下,服务器不会直接返回查询结果,而是通过布尔值(Tr…...
大模型数据集全面整理:444个数据集下载地址
本文针对Datasets for Large Language Models: A Comprehensive Survey 中的 444 个数据集(涵盖8种语言类别和32个领域)进行完整下载地址整理收集。 2024-02-28,由杨刘、曹家欢、刘崇宇、丁凯、金连文等作者编写,深入探讨了大型语…...
Ubuntu 下 nginx-1.24.0 源码分析 ngx_tm_t 类型
src\os\unix\ngx_time.h 中 typedef struct tm ngx_tm_t; tm 是 C 标准库中定义的一个结构体,通常用于表示日期和时间的信息。它通常定义在 <time.h> 头文件中 struct tm {int tm_sec; /* 秒,范围 0-59 */int tm_min; /* …...
Linux 创建进程 fork()、vfork() 与进程管理
Linux 创建进程 fork、vfork、进程管理 一、Linux的0号、1号、2号进程二、Linux的进程标识三、fork() 函数1、基本概念2、函数特点3、用法以及应用场景(1)父子进程执行不同的代码(2)进程执行另一个程序 4、工作原理 四、vfork() 函…...
2025web寒假作业二
一、整体功能概述 该代码构建了一个简单的后台管理系统界面,主要包含左侧导航栏和右侧内容区域。左侧导航栏有 logo、管理员头像、导航菜单和安全退出按钮;右侧内容区域包括页头、用户信息管理内容(含搜索框和用户数据表格)以及页…...
鸿蒙NEXT API使用指导之文件压缩和邮件创建
鸿蒙NEXT API 使用指导 一、前言二、邮件创建1、拉起垂类应用2、 UIAbilityContext.startAbilityByType 原型2.1、wantParam2.2、abilityStartCallback 与 callback 3、拉起邮箱类应用3.1、单纯拉起邮箱应用3.2、传入带附件的邮件 三、压缩文件1、认识 zlib2、压缩处理2.1、单文…...
javaEE-10.CSS入门
目录 一.什么是CSS 编辑二.语法规则: 三.使用方式 1.行内样式: 2.内部样式: 3.外部样式: 空格规范 : 四.CSS选择器类型 1.标签选择器 2.类选择器 3.ID选择器 4.通配符选择器 5.复合选择器 五.常用的CSS样式 1.color:设置字体颜色 2.font-size:设置字体大小 3…...
Spring Boot牵手Redisson:分布式锁实战秘籍
一、引言 在当今的分布式系统架构中,随着业务规模的不断扩大和系统复杂度的日益增加,如何确保多个服务节点之间的数据一致性和操作的原子性成为了一个至关重要的问题。在单机环境下,我们可以轻松地使用线程锁或进程锁来控制对共享资源的访问,但在分布式系统中,由于各个服务…...
制药行业 BI 可视化数据分析方案
一、行业背景 随着医药行业数字化转型的深入,企业积累了海量的数据,包括销售数据、生产数据、研发数据、市场数据等。如何利用这些数据,挖掘其价值,为企业决策提供支持,成为医药企业面临的重大挑战。在当今竞争激烈的…...
[学习笔记] Kotlin Compose-Multiplatform
Compose-Multiplatform 原文:https://github.com/zimoyin/StudyNotes-master/blob/master/compose-multiplatform/compose.md Compose Multiplatform 是 JetBrains 为桌面平台(macOS,Linux,Windows)和Web编写Kotlin UI…...
ubutun系统常用配置
目录 1. 更新系统 2. 安装 vim 文本编辑器 3. 扩展文件系统 4. 设置静态IP地址(可选) 5. 安装图形驱动 6. 安装常用软件 7. 调整启动项 8. 清理系统 9. 配置SSH 10. 安装VNC服务器(可选) 11. 安装桌面环境(…...
PHP函数介绍—get_headers(): 获取URL的响应头信息
概述:在PHP开发中,我们经常需要获取网页或远程资源的响应头信息。PHP函数get_headers()能够方便地获取目标URL的响应头信息,并以数组形式返回。本文将介绍get_headers()函数的用法,以及提供一些相关的代码示例。 get_headers()函…...
