新手必须优先掌握的5个MySQL核心函数是:IFNULL()、COUNT()与COUNT(*)、DATE_FORMAT()、CONCAT()与CONCAT_WS()、ROUND();它们覆盖80%日常查询,关键在理解默认逻辑、执行顺序及常见陷阱。

MySQL 函数本身不是新手入门的起点,但掌握几个核心函数是绕不开的实战需求——关键不在“学多少函数”,而在“什么时候该用、怎么用对、为什么出错”。
哪些 MySQL 函数新手必须马上会用
刚连上数据库,想查数据、算结果、补空值,根本等不及学完所有函数。以下 5 个覆盖 80% 日常查询场景,优先级最高:
-
IFNULL():处理NULL最轻量的方式,比如SELECT IFNULL(price, 0) FROM products;别用COALESCE()替代它来简单填空,多一层解析开销 -
COUNT()和COUNT(*)区别必须清楚:COUNT(col)忽略NULL,COUNT(*)统计行数,哪怕全为NULL也计 1 -
DATE_FORMAT()是读日期的刚需,但新手常写成DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i')却忘了字段本身是DATETIME还是TIMESTAMP,时区隐式转换可能让结果偏移 -
CONCAT()拼字符串时,任意参数为NULL整体返回NULL,要用CONCAT_WS('-', col1, col2)或提前套IFNULL() -
ROUND()默认四舍五入到整数,要保留小数得写ROUND(price, 2),不加第二参数就等于砍掉全部小数位
新手最容易踩坑的函数行为
不是语法写错,而是对函数“默认逻辑”没概念,导致结果看似正常实则埋雷:
-
SUM()对空结果集返回NULL,不是0;聚合前没加WHERE或关联失败时,前端显示为空或报错,常被误判为数据问题 -
GROUP BY后用SELECT *在 MySQL 5.7+ 默认报错(ONLY_FULL_GROUP_BY开启),但很多人关掉这个模式后,发现SELECT name, MAX(age), city中city值是随机的——它根本没参与分组逻辑 -
STR_TO_DATE()解析字符串日期时,格式符必须严格匹配,'2023/05/01'要写STR_TO_DATE('2023/05/01', '%Y/%m/%d'),写成'%Y-%m-%d'就返回NULL -
LIKE不是函数但常和函数混用:前导通配符LIKE '%abc'无法走索引,而LEFT(col, 3) = 'abc'可能走索引(取决于函数是否被索引覆盖)
别急着学函数,先搞清执行顺序
很多“函数没生效”的问题,根源是不知道 MySQL 实际执行流程:
-
WHERE在GROUP BY之前,所以不能在WHERE里用AVG()、SUM()等聚合函数 -
HAVING才是过滤分组结果的地方,HAVING COUNT(*) > 1合法,WHERE COUNT(*) > 1直接报错 -
ORDER BY和LIMIT是最后执行的,所以ORDER BY RAND()会先全表排序再取 1 条,大数据量极慢 - 窗口函数(如
ROW_NUMBER())在 MySQL 8.0+ 才支持,5.7 里硬写会报FUNCTION xxx does not exist
函数只是工具,真正卡住新手的从来不是记不住 UPPER() 和 LOWER(),而是查半天发现 WHERE created_at > '2023-01-01' 没结果,其实字段是 INT 存的时间戳——类型不匹配时函数和比较都失效,但 MySQL 往往静默转成 0 或截断,很难察觉。










