MySQL 函数详解
MySQL 是一个流行的开源关系型数据库管理系统,广泛应用于各种应用程序中。MySQL 提供了丰富的函数,用于数据处理、查询优化和系统管理。本文将详细介绍 MySQL 中的各种函数,包括字符串函数、数值函数、日期和时间函数、聚合函数等。
一、字符串函数
1. CONCAT
CONCAT
函数用于连接两个或多个字符串。
SELECT CONCAT('Hello', ' ', 'World') AS greeting;
结果:
+----------+
| greeting |
+----------+
| Hello World |
+----------+
2. LENGTH
LENGTH
函数返回字符串的长度(以字节为单位)。
SELECT LENGTH('Hello') AS length;
结果:
+--------+
| length |
+--------+
| 5 |
+--------+
3. SUBSTRING
SUBSTRING
函数用于截取字符串的子串。
SELECT SUBSTRING('Hello World', 1, 5) AS sub_string;
结果:
+------------+
| sub_string |
+------------+
| Hello |
+------------+
二、数值函数
1. ABS
ABS
函数返回数值的绝对值。
SELECT ABS(-123) AS absolute_value;
结果:
+----------------+
| absolute_value |
+----------------+
| 123 |
+----------------+
2. ROUND
ROUND
函数用于对数值进行四舍五入。
SELECT ROUND(123.456, 2) AS rounded_value;
结果:
+--------------+
| rounded_value |
+--------------+
| 123.46 |
+--------------+
3. CEIL 和 FLOOR
CEIL
函数返回大于或等于指定数值的最小整数,FLOOR
函数返回小于或等于指定数值的最大整数。
SELECT CEIL(123.45) AS ceiling_value, FLOOR(123.45) AS floor_value;
结果:
+---------------+------------+
| ceiling_value | floor_value |
+---------------+------------+
| 124 | 123 |
+---------------+------------+
三、日期和时间函数
1. NOW
NOW
函数返回当前日期和时间。
SELECT NOW() AS current_datetime;
结果:
+---------------------+
| current_datetime |
+---------------------+
| 2024-06-16 12:34:56 |
+---------------------+
2. DATE_FORMAT
DATE_FORMAT
函数用于格式化日期。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d') AS formatted_date;
结果:
+----------------+
| formatted_date |
+----------------+
| 2024-06-16 |
+----------------+
3. DATE_ADD 和 DATE_SUB
DATE_ADD
和 DATE_SUB
函数用于日期的加减操作。
SELECT DATE_ADD('2024-06-16', INTERVAL 10 DAY) AS new_date;
SELECT DATE_SUB('2024-06-16', INTERVAL 5 DAY) AS new_date;
结果:
+------------+
| new_date |
+------------+
| 2024-06-26 |
+------------+
+------------+
| new_date |
+------------+
| 2024-06-11 |
+------------+
四、聚合函数
1. COUNT
COUNT
函数用于统计满足条件的行数。
SELECT COUNT(*) AS total_count FROM employees;
结果:
+-------------+
| total_count |
+-------------+
| 100 |
+-------------+
2. SUM
SUM
函数用于计算数值列的总和。
SELECT SUM(salary) AS total_salary FROM employees;
结果:
+--------------+
| total_salary |
+--------------+
| 500000 |
+--------------+
3. AVG
AVG
函数用于计算数值列的平均值。
SELECT AVG(salary) AS average_salary FROM employees;
结果:
+----------------+
| average_salary |
+----------------+
| 5000 |
+----------------+
4. MAX 和 MIN
MAX
函数返回数值列的最大值,MIN
函数返回数值列的最小值。
SELECT MAX(salary) AS max_salary, MIN(salary) AS min_salary FROM employees;
结果:
+------------+------------+
| max_salary | min_salary |
+------------+------------+
| 10000 | 2000 |
+------------+------------+
五、条件判断函数
1. IF
IF
函数用于条件判断。
SELECT name, IF(salary > 5000, 'High', 'Low') AS salary_level FROM employees;
结果:
+------+--------------+
| name | salary_level |
+------+--------------+
| John | High |
| Jane | Low |
+------+--------------+
2. CASE
CASE
函数用于多条件判断。
SELECT name,
CASE
WHEN salary > 7000 THEN 'Very High'
WHEN salary > 5000 THEN 'High'
ELSE 'Average'
END AS salary_level
FROM employees;
结果:
+------+-------------+
| name | salary_level |
+------+-------------+
| John | Very High |
| Jane | Average |
+------+-------------+
六、用户自定义函数
除了内置函数,MySQL 还支持用户自定义函数(UDF)。开发者可以创建自定义函数来满足特定需求。
创建自定义函数
DELIMITER //
CREATE FUNCTION calculate_bonus(salary DECIMAL(10,2))
RETURNS DECIMAL(10,2)
BEGIN
DECLARE bonus DECIMAL(10,2);
SET bonus = salary * 0.10;
RETURN bonus;
END //
DELIMITER ;
使用自定义函数
SELECT name, salary, calculate_bonus(salary) AS bonus FROM employees;
结果:
+------+--------+--------+
| name | salary | bonus |
+------+--------+--------+
| John | 8000 | 800 |
| Jane | 4500 | 450 |
+------+--------+--------+
总结
MySQL 提供了丰富的函数集,涵盖字符串处理、数值运算、日期时间操作和聚合计算等多个方面。这些函数在日常数据库操作中极为重要,通过合理使用这些函数,可以大大提高数据处理和查询的效率。用户还可以通过自定义函数,扩展 MySQL 的功能以满足特定需求。