跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL 常用函数整理与使用指南

综述由AI生成MySQL 常用函数涵盖流程控制、聚合、加密、日期、数字、字符串及其他功能。各类函数的语法说明与示例,包括 IF、COUNT、SHA、CURDATE、ROUND、UPPER 等核心用法,并补充了索引优化、NULL 处理及版本兼容性等最佳实践,帮助开发者快速查阅数据库操作指令,提升数据处理效率。

RefactorPro发布于 2025/2/7更新于 2026/6/219 浏览
MySQL 常用函数整理与使用指南

MySQL 常用函数整理与使用指南

在数据库开发中,熟练掌握 MySQL 内置函数是提升查询效率和数据处理能力的关键。本文系统整理了 MySQL 中常用的各类函数,涵盖流程控制、聚合、加密、日期、数字、字符串及其他功能,并附带语法说明与示例,帮助开发者快速查阅与应用。

一、流程控制函数

流程控制函数用于根据条件返回不同的值,常用于数据清洗和逻辑判断。

序号函数说明
1IF(test, t, f)如果 test 为真,返回 t;否则返回 f
2IFNULL(arg1, arg2)如果 arg1 不是 NULL,返回 arg1,否则返回 arg2
3NULLIF(arg1, arg2)如果 arg1 = arg2 返回 NULL;否则返回 arg1
4CASE WHEN [test] THEN [result]... ELSE [default] END如果 testN 为真,则返回 resultN,否则返回 default
5CASE [test] WHEN [val1] THEN [result]... ELSE [default] END如果 test 和 valN 相等,则返回 resultN,否则返回 default

注意:CASE 语句在复杂逻辑处理中比嵌套 IF 更具可读性。

示例:IF 函数

SELECT IF(1 > 0, 'yes', 'no');

结果:yes

二、聚合函数

聚合函数对一组值执行计算并返回单个值,常用于统计报表。

序号函数说明
1COUNT(col)统计查询结果的行数(忽略 NULL)
2MIN(col)查询指定列的最小值
3SUM(col)求和,返回指定列的总和
4AVG(col)求平均值,返回指定列数据的平均值

示例:SUM 函数

SELECT SUM(age) AS total_age  Student;
FROM

结果:age 的总和

性能提示:避免在 WHERE 子句中对索引列使用聚合函数或转换操作,以免导致索引失效。

三、加密函数

加密函数用于保护敏感数据,如密码存储等场景。

序号函数说明
1SHA()计算字符串 str 的安全散列算法 (SHA) 校验和
2PASSWORD(str)返回字符串 str 的加密版本,不可逆转
3MD5()计算字符串 str 的 MD5 校验和
4ENCRYPT(str, salt)使用 UNIX crypt() 函数加密字符串 str
5ENCODE(str, key)使用 key 作为密钥加密字符串 str,结果为二进制 BLOB

示例:ENCODE 函数

SELECT ENCODE('geeksforgeeks', 'passwordstring');

结果:Q)?P????j[K

安全建议:生产环境建议使用更安全的哈希算法(如 SHA-256),并配合盐值(Salt)存储。

四、日期函数

日期函数用于处理时间戳、日期计算及格式化,是日志分析和业务计时的基础。

序号函数说明
1CURDATE()返回当前日期
2CURRENT_DATE()返回当前日期
3CURRENT_TIME返回当前时间
4CURRENT_TIMESTAMP()返回当前日期和时间
5CURTIME()返回当前时间
6DATE()从日期或日期时间表达式中提取日期值
7DATEDIFF(d1, d2)计算日期 d1->d2 之间相隔的天数
8YEAR(d)返回年份
9YEARWEEK(date, mode)返回年份及第几周(0 到 53)
10WEEKOFYEAR(d)计算日期 d 是本年的第几个星期
11WEEKDAY(d)日期 d 是星期几,0 表示星期一
12TO_DAYS(d)计算日期 d 距离 0000 年 1 月 1 日的天数
13TIMESTAMP(expression, interval)将参数加和或返回日期表达式
14TIMEDIFF(time1, time2)计算时间差值
15TIME_TO_SEC(t)将时间 t 转换为秒
16NOW()返回当前日期和时间
17MONTH(d)返回日期 d 中的月份值
18DAYNAME(d)返回日期 d 是星期几
19LAST_DAY(d)返回给定日期的那一月份的最后一天
20ADDDATE(d, n)计算起始日期 d 加上 n 天的日期

示例:DAYNAME 函数

SELECT DAYNAME('2018-6-1 12:45:21');

结果:Friday

注意事项:不同版本的 MySQL 在日期函数行为上可能存在细微差异,建议查阅对应版本文档。

五、数字函数

数字函数提供数学运算支持,包括三角函数、取整、随机数等。

序号函数说明
1SQRT(x)返回 x 的平方根
2SIN(x)求正弦值 (参数是弧度)
3SIGN(x)返回 x 的符号 (-1, 0, 1)
4ROUND(x)返回离 x 最近的整数
5RAND()返回 0 到 1 的随机数
6POWER(x, y)返回 x 的 y 次方
7MOD(x, y)返回 x 除以 y 以后的余数
8PI()返回圆周率 (3.141593)
9FLOOR(x)返回小于或等于 x 的最大整数
10CEIL(x) / CEILING(x)返回大于或等于 x 的最小整数
11ABS(x)返回 x 的绝对值
12TRUNCATE(x, y)返回数值 x 保留到小数点后 y 位的值

示例:CEIL 函数

SELECT CEIL(2.5);
SELECT CEILING(2.5);   

结果:3

六、字符串函数

字符串函数用于文本处理,包括大小写转换、截取、拼接等。

序号函数说明
1UPPER(s) / UCASE(s)将字符串转换为大写
2LOWER(s) / LCASE(s)将字符串转换为小写
3TRIM(s)去掉字符串 s 开始和结尾处的空格
4SUBSTRING_INDEX(s, delimiter, number)返回分隔符之后的子串
5SUBSTRING(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串
6CONCAT(s1, s2...sn)多个字符串合并为一个字符串
7REPLACE(s, s1, s2)将字符串 s2 替代字符串 s 中的字符串 s1
8REVERSE(s)将字符串 s 的顺序反过来
9LEFT(s, n)返回字符串 s 的前 n 个字符
10RIGHT(s, n)返回字符串 s 的后 n 个字符
11LENGTH(s) / CHAR_LENGTH(s)返回字符串长度
12LOCATE(s1, s)从字符串 s 中获取 s1 的开始位置

示例:INSERT 函数

SELECT INSERT("google.com", 1, 5, "baidu");

结果:baidu

七、其他函数

其他函数包括用户信息、类型转换及通用工具函数。

序号函数说明
1USER()返回当前用户
2VERSION()返回数据库的版本号
3DATABASE()返回当前数据库名
4COALESCE(expr1, expr2...)返回参数中的第一个非空表达式
5CONV(x, f1, f2)返回 f1 进制数变成 f2 进制数
6CONVERT(s USING cs)函数将字符串 s 的字符集变成 cs
7CAST(x AS type)转换数据类型
8BIN(x)返回 x 的二进制编码
9ISNULL(expression)判断表达式是否为 NULL
10LAST_INSERT_ID()返回最近生成的 AUTO_INCREMENT 值

示例:CONV 函数

SELECT CONV(13, 10, 2);

结果:1101

八、最佳实践与注意事项

  1. 索引优化:在 WHERE 子句中对列进行函数运算(如 WHERE YEAR(create_time) = 2023)可能导致索引失效。建议改为范围查询(WHERE create_time >= '2023-01-01' AND create_time < '2024-01-01')。
  2. NULL 处理:聚合函数通常忽略 NULL 值,但 COUNT(*) 会统计所有行。使用 IFNULL 或 COALESCE 可避免 NULL 导致的计算错误。
  3. 字符集:字符串比较受字符集影响,确保连接字符集一致以避免乱码或排序错误。
  4. 性能监控:高频使用的函数应关注其执行计划,避免在大数据量表上使用复杂的字符串或加密函数。
  5. 版本兼容性:部分函数在不同 MySQL 大版本间行为可能变化,迁移前需验证。

通过合理使用上述函数,可以显著提升 SQL 查询的灵活性与效率,减少应用层的数据处理压力。

目录

  1. MySQL 常用函数整理与使用指南
  2. 一、流程控制函数
  3. 二、聚合函数
  4. 三、加密函数
  5. 四、日期函数
  6. 五、数字函数
  7. 六、字符串函数
  8. 七、其他函数
  9. 八、最佳实践与注意事项
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • JadeAI:开源 AI 简历生成器,50 套模板与 Docker 一键部署
  • Spring Boot+Vue3 多租户自助门店系统:IoT 硬件集成与无人值守方案
  • DeepSeek-R1-Distill-Llama-8B 部署教程:Docker Compose 多模型推理服务
  • AI Agent 生产级框架实战:架构设计与核心实现
  • 深入理解 HTML5 Web Workers:提升网页性能的核心技术
  • 秒杀场景下的 Redis 分布式锁优化与业务设计
  • SDXL Prompt Styler:AI 绘画风格控制与提示词工程优化方案
  • 编程入门指南:零基础如何选择第一门语言
  • 命令行大模型上下文协议(MCP)交互工具 MCPHost 实践
  • CoPaw 个人助理部署与定制指南:从零开始打造专属 AI 数字搭档
  • AI 编程工具实战对比:Trae、Cursor、Copilot 与 Windsurf
  • 前缀和算法:和为 K 的子数组与和可被 K 整除的子数组
  • LangChain 大语言模型开发框架入门与实战指南
  • AVL 树原理与 C++ 实现
  • Python 入门指南:基础语法与核心概念详解
  • 免费使用 AI 绘画模型 Nano Banana Pro 指南
  • 大模型时代人形机器人感知:视觉 - 语言模型在机器人中的应用
  • OpenClaw:从认知到执行的行动型 AI 框架解析
  • Android 网络请求框架封装实战:基于 ViewModel + Retrofit + RxJava
  • JTextArea 与 JTable 自动滚动至最后一行的实现

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online