MySQL 函数
聚合、字符串、日期、流程控制等常用内置函数。
Key Points内置函数覆盖聚合、文本、日期、条件,能让 SQL 在库内完成大量计算。
聚合函数
SQL
SELECT COUNT(*), SUM(amount), AVG(amount), MAX(amount), MIN(amount)
FROM orders;Output
+----------+-------------+-------------+-------------+-------------+
| COUNT(*) | SUM(amount) | AVG(amount) | MAX(amount) | MIN(amount) |
+----------+-------------+-------------+-------------+-------------+
| 3 | 116.50 | 38.833333 | 99.00 | 5.00 |
+----------+-------------+-------------+-------------+-------------+字符串与日期
SQL
SELECT CONCAT('Hi, ', username) FROM users;
SELECT UPPER(username), LENGTH(username) FROM users;
SELECT NOW(), DATE(NOW()), DATE_FORMAT(NOW(), '%Y-%m-%d');
SELECT DATEDIFF('2026-12-31', '2026-01-01');Output
+---------------------+----------------+------------------------------------+
| NOW() | DATE(NOW()) | DATE_FORMAT(NOW(), '%Y-%m-%d') |
+---------------------+----------------+------------------------------------+
| 2026-05-20 14:30:00 | 2026-05-20 | 2026-05-20 |
+---------------------+----------------+------------------------------------+流程控制 IF / CASE
SQL
SELECT username,
IF(age >= 30, '资深', '新人') AS 段位,
CASE WHEN age < 18 THEN '未成年'
WHEN age < 60 THEN '成年'
ELSE '长辈' END AS 阶段
FROM users;Aggregates pair with
GROUP BY; WHERE filters rows before aggregation, HAVING filters groups after (e.g. HAVING COUNT(*) > 1).聚合函数
SQL
SELECT COUNT(*), SUM(amount), AVG(amount), MAX(amount), MIN(amount)
FROM orders;Output
+----------+-------------+-------------+-------------+-------------+
| COUNT(*) | SUM(amount) | AVG(amount) | MAX(amount) | MIN(amount) |
+----------+-------------+-------------+-------------+-------------+
| 3 | 116.50 | 38.833333 | 99.00 | 5.00 |
+----------+-------------+-------------+-------------+-------------+字符串与日期
SQL
SELECT CONCAT('Hi, ', username) FROM users;
SELECT UPPER(username), LENGTH(username) FROM users;
SELECT NOW(), DATE(NOW()), DATE_FORMAT(NOW(), '%Y-%m-%d');
SELECT DATEDIFF('2026-12-31', '2026-01-01');Output
+---------------------+----------------+------------------------------------+
| NOW() | DATE(NOW()) | DATE_FORMAT(NOW(), '%Y-%m-%d') |
+---------------------+----------------+------------------------------------+
| 2026-05-20 14:30:00 | 2026-05-20 | 2026-05-20 |
+---------------------+----------------+------------------------------------+流程控制 IF / CASE
SQL
SELECT username,
IF(age >= 30, '资深', '新人') AS 段位,
CASE WHEN age < 18 THEN '未成年'
WHEN age < 60 THEN '成年'
ELSE '长辈' END AS 阶段
FROM users;聚合函数常和
GROUP BY 搭配;WHERE 过滤行、HAVING 过滤分组结果(如 HAVING COUNT(*) > 1)。记住:WHERE 在聚合前、HAVING 在聚合后生效。