在MySQL中,SQL函数是执行特定任务、简化复杂查询和操作数据的强大工具。这些函数可以分为多个类别,包括字符串函数、数学函数、日期和时间函数、聚合函数以及控制流函数等。以下是一些常用MySQL函数。
一、字符串函数
-
CONCAT(): 连接两个或多个字符串。
sqlSELECT CONCAT('MySQL', ' ', 'Functions'); -- 输出: MySQL Functions
-
LENGTH() 或 CHAR_LENGTH(): 返回字符串的长度。
sqlSELECT LENGTH('Hello World'); -- 输出: 11 SELECT CHAR_LENGTH('Hello World'); -- 输出: 11
-
UPPER() 和 LOWER(): 将字符串转换为大写或小写。
sqlSELECT UPPER('Hello'); -- 输出: HELLO SELECT LOWER('WORLD'); -- 输出: world
-
SUBSTRING(): 从字符串中提取子串。
sqlSELECT SUBSTRING('Hello World', 7); -- 输出: World SELECT SUBSTRING('Hello World', 1, 5); -- 输出: Hello
-
TRIM(): 去除字符串两端的空格。
sqlSELECT TRIM(' Hello World '); -- 输出: Hello World
-
REPLACE(): 替换字符串中的部分字符。
sqlSELECT REPLACE('Hello World', 'World', 'MySQL'); -- 输出: Hello MySQL
二、数学函数
-
ROUND(): 对数进行四舍五入。
sqlSELECT ROUND(3.14159); -- 输出: 3 SELECT ROUND(3.567, 2); -- 输出: 3.57
-
CEIL() 或 CEILING(): 返回大于或等于给定数字的最小整数。
sqlSELECT CEIL(3.14); -- 输出: 4 SELECT CEILING(-3.14); -- 输出: -3
-
FLOOR(): 返回小于或等于给定数字的最大整数。
sqlSELECT FLOOR(3.14); -- 输出: 3 SELECT FLOOR(-3.14); -- 输出: -4
-
ABS(): 返回数字的绝对值。
sqlSELECT ABS(-10); -- 输出: 10
三、日期和时间函数
-
NOW(): 返回当前日期和时间。
sqlSELECT NOW(); -- 输出: 当前日期和时间,如 2024-10-28 06:10:23
-
CURDATE() 和 CURTIME(): 分别返回当前日期和当前时间。
sqlSELECT CURDATE(); -- 输出: 当前日期,如 2024-10-28 SELECT CURTIME(); -- 输出: 当前时间,如 06:10:23
-
DATE_FORMAT(): 按指定格式格式化日期/时间。
sqlSELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'); -- 输出: 格式化的当前日期和时间
-
YEAR() , MONTH() , DAY(): 分别提取日期的年、月、日部分。
sqlSELECT YEAR('2024-10-28'); -- 输出: 2024 SELECT MONTH('2024-10-28'); -- 输出: 10 SELECT DAY('2024-10-28'); -- 输出: 28
四、聚合函数
-
COUNT(): 计算表中的行数。
sqlSELECT COUNT(*) FROM users; -- 输出: 用户表中的行数
-
SUM(): 计算某列的总和。
sqlSELECT SUM(salary) FROM employees; -- 输出: 员工薪水总和
-
AVG(): 计算某列的平均值。
sqlSELECT AVG(salary) FROM employees; -- 输出: 员工薪水平均值
-
MAX() 和 MIN(): 返回某列的最大值和最小值。
sqlSELECT MAX(salary) FROM employees; -- 输出: 员工薪水的最大值 SELECT MIN(salary) FROM employees; -- 输出: 员工薪水的最小值
五、控制流函数
-
IF(): 根据条件返回不同的值。
sqlSELECT IF(score >= 60, 'Pass', 'Fail') FROM exams; -- 根据分数判断是否及格
-
CASE: 更复杂的条件判断。
sqlSELECT CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' WHEN score >= 70 THEN 'C' ELSE 'D' END AS grade FROM exams; -- 根据分数划分等级
-
COALESCE(): 返回第一个非NULL的值。
sqlSELECT COALESCE(NULL, NULL, 'Third Value', 'Fourth Value'); -- 输出: Third Value
这些函数只是MySQL中可用函数的一个子集,但它们在日常的数据库查询和操作中非常常用。熟练掌握这些函数,可以帮助数据库管理员、开发人员和数据分析师更有效地处理数据、生成报告和构建复杂的应用程序。