常用函数
MySQL 常用函数(基础)
MySQL 提供了丰富的内置函数,用于处理字符串、数值、日期和时间以及条件逻辑。下面分类介绍最常用的基础函数。
一、字符串函数
| 函数 | 说明 | 示例 | 结果 |
|---|---|---|---|
CONCAT(str1, str2, ...) | 拼接多个字符串 | SELECT CONCAT('Hello', ' ', 'World'); | Hello World |
LENGTH(str) | 返回字符串的字节长度(受字符集影响) | SELECT LENGTH('你好');(UTF-8 下) | 6 |
CHAR_LENGTH(str) | 返回字符串的字符长度 | SELECT CHAR_LENGTH('你好'); | 2 |
UPPER(str) / LOWER(str) | 转为大写 / 小写 | SELECT UPPER('mysql'); | MYSQL |
SUBSTRING(str, pos, len) | 从 pos 位置开始截取 len 个字符(pos 从 1 开始) | SELECT SUBSTRING('Hello World', 7, 5); | World |
二、数值函数
| 函数 | 说明 | 示例 | 结果 |
|---|---|---|---|
ROUND(num, d) | 四舍五入,保留 d 位小数(d 省略则为 0) | SELECT ROUND(12.345, 2); | 12.35 |
FLOOR(num) | 向下取整(返回不大于 num 的最大整数) | SELECT FLOOR(12.99); | 12 |
CEIL(num) / CEILING(num) | 向上取整(返回不小于 num 的最小整数) | SELECT CEIL(12.01); | 13 |
RAND() | 返回 [0, 1) 的随机浮点数 | SELECT RAND(); | 例如 0.123456 |
三、日期函数
| 函数 | 说明 | 示例 | 结果(假设当前时间 2025-04-25 10:30:00) |
|---|---|---|---|
NOW() | 当前日期和时间 | SELECT NOW(); | 2025-04-25 10:30:00 |
CURDATE() | 当前日期 | SELECT CURDATE(); | 2025-04-25 |
CURTIME() | 当前时间 | SELECT CURTIME(); | 10:30:00 |
DATE_ADD(date, INTERVAL value unit) | 日期加法 | SELECT DATE_ADD('2025-04-25', INTERVAL 3 DAY); | 2025-04-28 |
DATEDIFF(date1, date2) | 返回两个日期相差的天数(date1 - date2) | SELECT DATEDIFF('2025-04-30', '2025-04-25'); | 5 |
四、条件函数
| 函数 | 说明 | 示例 | 结果 |
|---|---|---|---|
IF(condition, true_val, false_val) | 条件判断,类似于三元运算符 | SELECT IF(1 > 2, '是', '否'); | 否 |
CASE ... WHEN ... THEN ... END | 多分支条件,类似 switch-case | SELECT CASE 2 WHEN 1 THEN '一' WHEN 2 THEN '二' ELSE '其他' END; | 二 |
CASE 两种用法:
- 简单 CASE:
CASE value WHEN value1 THEN result1 WHEN value2 THEN result2 ... END - 搜索 CASE:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... END
sql
-- 搜索 CASE 示例
SELECT
name,
CASE
WHEN age < 18 THEN '未成年'
WHEN age BETWEEN 18 AND 65 THEN '成年'
ELSE '老年'
END AS age_group
FROM users;
五、综合示例
sql
-- 拼接姓名和年龄,并判断是否成年
SELECT
CONCAT(name, ' (', age, ')') AS info,
IF(age >= 18, '成年', '未成年') AS status
FROM students;
-- 计算订单创建时间距离今天的天数,并分类
SELECT
order_id,
DATEDIFF(CURDATE(), order_date) AS days_ago,
CASE
WHEN DATEDIFF(CURDATE(), order_date) <= 7 THEN '近7天'
WHEN DATEDIFF(CURDATE(), order_date) <= 30 THEN '30天内'
ELSE '更早'
END AS category
FROM orders;
掌握这些基础函数可以大大简化 SQL 查询中的数据处理逻辑,避免在应用层进行额外计算。
参考文献
| 资料 | 说明 |
|---|---|
| MySQL 8.0 手册 | 官方 |
| 数据存储导读 | 学习路径 |
相关文章
多表查询
多表查询用于从两个或更多表中获取数据。常见的连接类型包括内连接、外连接(左、右)和自连接。
MySQL 安装与基本操作
MySQL 的安装因操作系统而异,但安装完成后,通过命令行客户端连接并进行基本管理的方法是通用的。下面分别介绍安装方式和常用命令。
数据类型
MySQL 支持多种数据类型,可分为数值、字符串、日期时间、枚举/集合以及 JSON 等。选择合适的类型可以优化存储空间和查询性能。
查询数据
数据查询语言(DQL)用于从数据库中检索数据,核心是 SELECT 语句。下面从基础查询、条件筛选、排序、限制行数、聚合与分组等方面进行介绍。
数据库与表的基本操作
DDL(Data Definition Language)用于定义数据库结构,包括创建、修改、删除数据库和表。下面介绍 MySQL 中常用的 DDL 语句。
数据操作
DML(Data Manipulation Language)用于对表中的数据进行增(INSERT)、删(DELETE)、改(UPDATE)。下面详细介绍这三类操作。