一、什么是 MySQL 函数?

你可以把它理解成:**MySQL 提前帮你写好的 "小工具"**你直接调用,就能快速完成:

  • 字符串处理
  • 数字计算
  • 日期处理
  • 统计计算
  • 判空、转换...

不用自己写复杂逻辑,直接用函数 = 一行搞定

二、MySQL 函数分 5 大类(必背)

1. 字符串函数(处理文字)

sql

复制代码
UPPER('abc')        → 转大写 ABC
LOWER('ABC')        → 转小写 abc
LENGTH('你好')      → 长度(字节)
CONCAT('a','b')     → 拼接字符串 → ab
SUBSTR('abcde',1,3) → 截取前3个字符 → abc
TRIM('  abc  ')     → 去掉两边空格
IFNULL(name,'未知') → 如果name为null,显示"未知"

2. 数值函数(处理数字)

复制代码
CEIL(1.1)       → 向上取整 2
FLOOR(1.9)      → 向下取整 1
ROUND(1.234,2)  → 四舍五入保留2位 → 1.23
ABS(-10)        → 绝对值 → 10
MOD(10,3)       → 取余 → 1
RAND()          → 随机数 0~1

3. 日期函数(处理时间)

复制代码
NOW()               → 当前时间 2026-04-06 10:55:00
CURDATE()           → 当前日期 2026-04-06
YEAR(NOW())         → 取年份 → 2026
MONTH(NOW())        → 取月份 → 4
DAY(NOW())          → 取日期 → 6
DATE_FORMAT(日期,'%Y-%m-%d') → 格式化日期

4. 流程函数(判断逻辑)

① IF (条件,成立值,不成立值)

sql

复制代码
IF(age>18,'成年','未成年')

② CASE WHEN(多条件判断)

搜索式 CASE(CASE WHEN)
例子1:
复制代码
CASE
    WHEN age<18 THEN '少年'
    WHEN age<30 THEN '青年'
    ELSE '中年'
END
例子2:
复制代码
SELECT
    id,
    name,
    CASE 
        WHEN math >= 85 THEN '优秀'
        WHEN math >= 60 THEN '及格'
        ELSE '不及格' 
    END AS math_level,
    CASE 
        WHEN english >= 85 THEN '优秀'
        WHEN english >= 60 THEN '及格'
        ELSE '不及格' 
    END AS english_level,
    CASE 
        WHEN chinese >= 85 THEN '优秀'
        WHEN chinese >= 60 THEN '及格'
        ELSE '不及格' 
    END AS chinese_level
FROM score;
例子3:
复制代码
CASE
    WHEN workaddress = '北京' OR workaddress = '上海' THEN '一线城市'
    ELSE '二线城市'
END
语法规则
  • CASE 后面不能跟字段名
  • 后面的 WHEN 可以写任意条件表达式(>、<、>=、AND、OR 等)
  • 逻辑:从上到下判断条件,第一个满足的就返回对应结果
简单式 CASE
例子1:

例子2:
复制代码
CASE workaddress
    WHEN '北京' THEN '一线城市'
    WHEN '上海' THEN '一线城市'
    ELSE '二线城市'
END
语法规则
  • CASE 后面必须跟字段名workaddress
  • 后面的 WHEN 只能写固定值 / 常量(不能写表达式)
  • 逻辑:把字段值和WHEN的值做等值匹配,相等就返回对应结果
两种写法的适用场景(一眼分清)

表格

语法类型 写法 适用场景 例子
简单式 CASE CASE 字段 WHEN 常量 THEN ... 等值匹配(等于某个值) 按城市分类、按性别分类
搜索式 CASE CASE WHEN 表达式 THEN ... 范围 / 多条件判断(>、<、区间、组合条件) 按分数分等级、按年龄分阶段

③ IFNULL (值,替换值)

sql

复制代码
IFNULL(workaddress,'地址未知')
  • IF(value, t, f):如果 value 为真,返回 t,否则返回 f。

    • 例子SELECT name, IF(age > 30, '老将', '新人') FROM emp;
  • IFNULL(value1, value2) :如果第一个值是 NULL,就返回第二个值。

    • 实战 :你的 workaddress 有些是 NULL,我们可以把它显示为"待定":SELECT name, IFNULL(workaddress, '待定') FROM emp;

5. 聚合函数(分组统计)

复制代码
COUNT(*)    → 统计总条数
SUM(age)    → 求和
AVG(age)    → 平均值
MAX(age)    → 最大值
MIN(age)    → 最小值

6.总结

相关推荐
AC赳赳老秦3 分钟前
用 OpenClaw 制定技术学习计划:根据目标岗位自动生成学习路线、推荐学习资源
开发语言·c++·人工智能·python·mysql·php·openclaw
前进的李工21 分钟前
MySQL性能优化:索引与子查询实战技巧
数据库·sql·mysql·性能优化
段ヤシ.1 小时前
回顾Java知识点,面试题汇总Day13:数据库MySQL(持续更新)
java·数据库·mysql
ULIi096kr2 小时前
MySQL磁盘爆满快速排查方案:一键查询库表空间、定位占用大户(RDS/自建通用)
数据库·mysql
Cx330❀2 小时前
【MySQL基础】库与表的全面操纵指南
linux·服务器·网络·数据库·c++·mysql
Database_Cool_2 小时前
AI 时代的数据仓库:阿里云 AnalyticDB MySQL 向量检索 + SQL 分析一体化实战
数据仓库·人工智能·mysql·阿里云
AOwhisky2 小时前
MySQL 学习笔记(第七期):高可用架构进阶与综合项目实战
linux·运维·笔记·学习·mysql·高可用·mha
Amnesia0_02 小时前
MYSQL中表的基本查询
数据库·mysql
Database_Cool_2 小时前
Doris vs 阿里云 AnalyticDB MySQL vs ClickHouse:3 大 OLAP 产品 2026 深度对比
数据库·mysql·阿里云
ULIi096kr3 小时前
查看 MySQL 数据库容量大小:完整实用查询方法(含表数据、磁盘占用统计)
数据库·mysql