
在数据库操作中,函数是不可或缺的一部分。MySQL 提供了多种内置函数,这些函数帮助我们进行数据处理、计算、格式化以及字符串操作等。根据功能的不同,MySQL 函数可以大致分为以下几类:
字符串函数
日期与时间函数
数学函数
聚合函数
控制流函数
信息函数
加密与散列函数
JSON 函数
类型转换函数
接下来,我们将逐一介绍这些函数的类别、使用方法和示例。
1. 字符串函数
字符串函数用于处理字符串数据。常见的字符串函数有:
- CONCAT() :拼接两个或多个字符串。
SELECT CONCAT('Hello ', 'World');
-- 输出: 'Hello World'
- LENGTH() :返回字符串的字节长度。
SELECT LENGTH('Hello');
-- 输出: 5
- SUBSTRING():提取字符串的子串。
SELECT SUBSTRING('Hello World', 1, 5);
-- 输出: 'Hello'
- REPLACE():替换字符串中的某个子字符串。
SELECT REPLACE('Hello World', 'World', 'MySQL');
-- 输出: 'Hello MySQL'
- UPPER() 和 LOWER() :将字符串转换为大写或小写。
SELECT UPPER('hello');
-- 输出: 'HELLO'
- TRIM():去除字符串两边的空格。
SELECT TRIM(' hello ');
-- 输出: 'hello'
2. 日期与时间函数
日期和时间函数用于处理日期和时间类型的数据。
- NOW():返回当前的日期和时间。
SELECT NOW();
-- 输出: '2024-12-02 10:00:00'
- CURDATE():返回当前的日期(不含时间部分)。
SELECT CURDATE();
-- 输出: '2024-12-02'
- DATE_ADD() 和 DATE_SUB() :用于对日期进行加减操作。
SELECT DATE_ADD('2024-12-02', INTERVAL 10 DAY);
-- 输出: '2024-12-12'
SELECT DATE_SUB('2024-12-02', INTERVAL 10 DAY);
-- 输出: '2024-11-22'
- DATE_FORMAT() :格式化日期时间为指定的格式。
SELECT DATE_FORMAT('2024-12-02', '%Y-%m-%d');
-- 输出: '2024-12-02'
- YEAR()、MONTH()、DAY():提取日期的年、月、日部分。
SELECT YEAR('2024-12-02'), MONTH('2024-12-02'), DAY('2024-12-02');
-- 输出: 2024, 12, 02
3. 数学函数
MySQL 提供了一些数学函数,用于数学计算和操作。
- ABS() :返回一个数值的绝对值。
SELECT ABS(-10);
-- 输出: 10
- ROUND() :对数值进行四舍五入。
SELECT ROUND(123.456, 2);
-- 输出: 123.46
- FLOOR() 和 CEIL() :FLOOR() 返回不大于给定数字的最大整数,CEIL() 返回不小于给定数字的最小整数。
SELECT FLOOR(123.456), CEIL(123.456);
-- 输出: 123, 124
- RAND() :返回一个随机浮动数值。
SELECT RAND();
-- 输出: 随机数,如 0.123456
- POW() 或 POWER() :计算一个数的幂。
SELECT POW(2, 3);
-- 输出: 8
4. 聚合函数
聚合函数用于对一组数据进行汇总或计算。
- COUNT() :计算行数。
SELECT COUNT(*) FROM employees;
-- 返回员工的数量
- SUM():求和。
SELECT SUM(salary) FROM employees;
-- 返回员工的工资总和
- AVG() :计算平均值。
SELECT AVG(salary) FROM employees;
-- 返回员工的平均工资
- MAX() 和 MIN() :返回最大值和最小值。
SELECT MAX(salary), MIN(salary) FROM employees;
-- 返回最高和最低工资
- GROUP_CONCAT() :将多个值合并为一个字符串。
SELECT GROUP_CONCAT(name) FROM employees;
-- 输出: 'Alice,Bob,Charlie'
5. 控制流函数
这些函数用于控制 SQL 查询的流程或返回不同的值。
- IF() :类似于 IF 语句,进行条件判断。
SELECT IF(salary > 50000, 'High', 'Low') FROM employees;
-- 根据工资判断高低
- CASE:条件判断语句,可以处理多个条件。
SELECT CASE
WHEN salary > 50000 THEN 'High'
WHEN salary > 30000 THEN 'Medium'
ELSE 'Low'
END
FROM employees;
-- 根据工资返回不同的等级
- IFNULL() :如果值为 NULL,则返回替代值。
SELECT IFNULL(NULL, 'N/A');
-- 输出: 'N/A'
- COALESCE() :返回列表中第一个非 NULL 值。
SELECT COALESCE(NULL, NULL, 'Hello');
-- 输出: 'Hello'
6. 信息函数
这些函数用于获取 MySQL 环境的相关信息。
- VERSION() :返回 MySQL 的版本号。
SELECT VERSION();
-- 输出: '8.0.23'
- DATABASE():返回当前数据库的名称。
SELECT DATABASE();
-- 输出: 'my_database'
- USER():返回当前数据库用户的用户名。
SELECT USER();
-- 输出: 'root@localhost'
7. 加密与散列函数
用于处理数据的加密与散列。
- MD5():计算 MD5 散列值。
SELECT MD5('password');
-- 输出: '5f4dcc3b5aa765d61d8327deb882cf99'
- SHA1() :计算 SHA-1 散列值。
SELECT SHA1('password');
-- 输出: '2c6ee24b09816a6f14f95d1698b24ead'
8. JSON 函数
MySQL 5.7 及更高版本支持 JSON 类型,并提供了一些操作 JSON 数据的函数。
- JSON_EXTRACT():从 JSON 数据中提取值。
SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name');
-- 输出: '"John"'
- JSON_ARRAY():创建一个 JSON 数组。
SELECT JSON_ARRAY('apple', 'banana', 'cherry');
-- 输出: '["apple", "banana", "cherry"]'
- JSON_OBJECT() :创建一个 JSON 对象。
SELECT JSON_OBJECT('name', 'John', 'age', 30);
-- 输出: '{"name": "John", "age": 30}'
9. 类型转换函数
这些函数用于不同数据类型之间的转换。常见的类型转换函数有:
- CAST():将一个值转换为另一种数据类型。例如,将字符串转换为整数或日期类型。
SELECT CAST('2024-12-02' AS DATE);
-- 输出: '2024-12-02' (字符串转换为日期类型)
- CONVERT():与 CAST() 类似,也用于数据类型转换,支持更复杂的转换(例如字符集的转换)。
SELECT CONVERT('2024-12-02', DATE);
-- 输出: '2024-12-02'
- BIN():将数字转换为二进制表示。
SELECT BIN(12);
-- 输出: '1100'
- CHAR() :将整数转换为字符。
SELECT CHAR(65);
-- 输出: 'A' (65对应的ASCII字符是 'A')
总结
MySQL 提供了丰富的内置函数,可以帮助开发者在查询中处理数据、进行计算、转换数据类型等操作。通过灵活运用这些函数,可以简化数据操作和提升查询的效率。常见的 MySQL 函数可以分为以下几类:
- 字符串函数:用于操作和处理字符串,如拼接、替换、提取子串等。
- 日期与时间函数:用于处理日期和时间,如获取当前时间、格式化日期、日期加减等。
- 数学函数:用于数学计算,如取绝对值、四舍五入、随机数等。
- 聚合函数:用于对一组数据进行汇总计算,如求和、计数、平均值等。
- 控制流函数:用于控制 SQL 查询的流程和条件判断,如 IF()、CASE 等。
- 信息函数:用于获取 MySQL 环境的相关信息,如数据库版本、当前用户等。
- 加密与散列函数:用于数据加密与散列,如 MD5()、SHA1() 等。
- JSON 函数:用于操作 JSON 数据类型,如 JSON_EXTRACT()、JSON_OBJECT() 等。
- 类型转换函数:用于不同数据类型之间的转换,如 CAST()、CONVERT() 等。
通过掌握这些 MySQL 内置函数,你将能够更加高效地处理各种数据操作,提高查询的性能和可维护性。在实际开发中,根据需求选择合适的函数,将极大地简化你的数据库操作。