Yihui’s Blog

在 MySQL 中,你使用过哪些函数?

日期:2026-07-11
难度:简单
标签:#面试 #MySQL #SQL函数 #VIP

一句话答案

常用函数可按聚合、字符串、日期时间、数值、条件与 JSON 分类回答,并说明函数放在索引列上可能影响索引使用。

面试口语版

我常用的聚合函数有 COUNT、SUM、AVG、MIN、MAX;字符串函数有 CONCAT、SUBSTRING、LENGTH、CHAR_LENGTH、TRIM;日期函数有 NOW、DATE_ADD、DATE_SUB、DATEDIFF、DATE_FORMAT;条件和空值处理有 CASE WHEN、IF、IFNULL、COALESCE;数值函数有 ROUND、CEIL、FLOOR;MySQL 8 项目里也会用 JSON_EXTRACT、JSON_UNQUOTE 等。使用时我会注意 NULL、字符集和时区,并避免在 WHERE 的普通索引列上直接套函数导致不能走常规索引范围。

原理拆解

类别常用函数易错点
聚合COUNT、SUM、AVG、MIN、MAXNULL 处理、GROUP BY
字符串CONCAT、SUBSTRING、TRIMLENGTH 是字节数,CHAR_LENGTH 是字符数
时间NOW、DATE_ADD、DATEDIFF会话时区、索引可用性
条件CASE、IFNULL、COALESCE类型隐式转换
数值ROUND、CEIL、FLOOR金额精度
JSONJSON_EXTRACT、JSON_SET路径、生成列索引

关键细节

  • COUNT(*) 统计行,COUNT(col) 忽略 NULL。
  • 将 DATE(created_at)=? 改为时间范围,通常更容易利用普通索引。
  • 函数名背得多不如能说明使用场景和性能影响。

面试官追问

  1. LENGTH 和 CHAR_LENGTH 区别?
  2. COALESCE 与 IFNULL 有何区别?
  3. 如何为 JSON 字段中的属性建立索引?

高分补充

复杂业务计算不一定应塞进 SQL;要在数据库计算、应用计算和预计算之间权衡可维护性与数据搬运成本。

学习清单

  • 每类准备 3 个函数和一个实际例子。
维护与整理 · Yihui在 GitHub 上编辑

继续阅读

浏览全部文章

SQL与NoSQL有什么区别?MySQL和MongoDB如何选型?实际项目中如何选择?

日期:2026-09-27 标签:#面试 #MySQL #数据库 难度:简单 来源:牛面 MySQL 题库 答案说明:独立整理(站内题目标记为 VIP,未读取会员答案) 一句话答案 MySQL与MongoDB的主要差异在数据模型、事务边界、查询方式和模式演化;按业务访问模式和一致性需求选型。 面试口语版(约 60…

阅读全文