MySQL 内置函数与连接查询详解
在日常开发中,MySQL 的内置函数和连接查询是数据处理的核心工具。下面结合实战场景,梳理一下常用的函数用法以及不同连接类型的区别。
常用内置函数
日期处理
处理时间戳是数据库操作的高频需求。
- 获取当前时间:
CURRENT_DATE()返回日期,CURRENT_TIME()返回时间,CURRENT_TIMESTAMP()则是完整的时间戳。 - 日期增减:使用
DATE_ADD(date, INTERVAL value type)或DATE_SUB()进行加减运算。比如给当前日期加 7 天。 - 计算差值:
DATEDIFF(date1, date2)直接返回两个日期的天数差(date1 - date2)。注意这里只比较日期部分,忽略时分秒。
字符串操作
处理文本数据时,这几个函数很实用。
- 字符集检查:
CHARSET(column_name)可以查看某列使用的字符集编码。 - 拼接文本:
CONCAT(str1, str2, ...)类似于字符串打印,把多个字段拼在一起。 - 长度计算:
LENGTH(column_name)返回字节长度。需注意在 UTF-8 下,一个中文通常占 3 个字节,英文字母占 1 个。如果在意字符个数而非字节,建议用CHAR_LENGTH()。 - 替换与截取:
REPLACE(col, old, new)用于全局替换;SUBSTRING(col, start, len)从指定位置截取指定长度。
数学与逻辑
- 取整与绝对值:
ABS(n)求绝对值;CEIL(n)向上取整,FLOOR(n)向下取整。 - 格式化与随机:
FORMAT(n, decimals)控制小数位数;RAND()生成 0 到 1 之间的随机数。 - 空值处理:
IFNULL(val1, val2)很有用,当val1为 NULL 时返回val2,否则返回val1。这能有效避免计算结果变成 NULL。
表连接查询
多表关联时,连接类型决定了最终结果的行数。
内连接 (INNER JOIN)
这是最严格的连接方式。只有当两张表在连接条件上都匹配时,才会返回该行数据。
SELECT field_list
FROM table1
INNER JOIN table2 ON join_condition AND other_conditions;
实际场景中,如果你只想看'有订单的用户',内连接最合适,没有订单的记录会被过滤掉。
外连接 (OUTER JOIN)
外连接会保留其中一个表的全部数据,即使另一个表中没有匹配项,对应字段显示为 NULL。


