MySQL提供了许多内置函数,用于在查询和处理数据时进行各种操作和计算。以下是一些常用的MySQL函数及其详细解释和代码实例:
1. 聚合函数
-
COUNT(expr):返回给定表达式非NULL值的数量。
SELECT COUNT(*) FROM 表名; -- 返回表中的记录总数
-
SUM(expr):返回给定表达式的总和。
SELECT SUM(价格) FROM 表名; -- 返回价格列的总和
-
AVG(expr):返回给定表达式的平均值。
SELECT AVG(分数) FROM 表名; -- 返回分数列的平均值
-
MAX(expr):返回给定表达式的最大值。
SELECT MAX(年龄) FROM 表名; -- 返回年龄列的最大值
-
MIN(expr):返回给定表达式的最小值。
SELECT MIN(年龄) FROM 表名; -- 返回年龄列的最小值
2. 日期和时间函数
-
NOW():返回当前日期和时间。
SELECT NOW(); -- 返回当前日期和时间,例如:'2023-09-09 02:26:28'
-
YEAR(date):返回date的年份。
SELECT YEAR('2023-09-09'); -- 返回2023
-
MONTH(date):返回date的月份。
SELECT MONTH('2023-09-09'); -- 返回9
-
DAY(date):返回date的日份。
SELECT DAY('2023-09-09'); -- 返回9
-
DATE_FORMAT(date, format):将date按照指定的格式进行格式化。
SELECT DATE_FORMAT('2023-09-09', '%Y年%m月%d日'); -- 返回'2023年09月09日'
3. 字符串函数
-
CONCAT(str1, str2, …):将多个字符串连接在一起。
SELECT CONCAT('Hello', ' ', 'World'); -- 返回'Hello World'
-
LENGTH(str):返回str的长度。
SELECT LENGTH('Hello'); -- 返回5
-
SUBSTRING(str, pos, len):返回str从pos位置开始长度为len的子字符串。
SELECT SUBSTRING('Hello World', 7, 5); -- 返回'World'
-
UPPER(str):将str转换为大写。
SELECT UPPER('hello'); -- 返回'HELLO'
-
LOWER(str):将str转换为小写。
SELECT LOWER('Hello'); -- 返回'hello'
4. 条件函数
-
IF(condition, true_expr, false_expr):如果条件为真,返回true_expr;否则,返回false_expr。
SELECT IF(成绩 >= 60, '及格', '不及格') FROM 表名; -- 根据成绩判断及格与否
-
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result END:根据条件进行条件判断和结果返回。
SELECT CASE WHEN 分数 >= 90 THEN '优秀' WHEN 分数 >= 80 THEN '良好' ELSE '及格' END FROM 表名; -- 根据分数判断等级
5. 类型转换函数
-
CAST(expr AS type):将表达式转换为指定类型。
SELECT CAST('123' AS UNSIGNED); -- 将字符串转换为无符号整数
-
CONVERT(expr, type):将表达式转换为指定类型。
SELECT CONVERT('2023-09-09', DATE); -- 将字符串转换为日期类型
6. 数学函数
-
ABS(x):返回x的绝对值。
SELECT ABS(-10); -- 返回10
-
ROUND(x):将x四舍五入为最接近的整数。
SELECT ROUND(3.7); -- 返回4
-
CEILING(x):返回大于或等于x的最小整数。
SELECT CEILING(3.2); -- 返回4
-
FLOOR(x):返回小于或等于x的最大整数。
SELECT FLOOR(3.8); -- 返回3
7. 随机数函数
-
RAND():函数返回一个位于0和1之间的随机浮点数。
SELECT RAND(); -- 返回一个随机浮点数
-
RAND(N):函数返回一个位于0和N之间的随机浮点数。
SELECT RAND(10); -- 返回一个位于0和10之间的随机浮点数
-
RAND(SEED):函数可以接受一个种子值SEED作为参数,用于生成重复的随机数序列。
SELECT RAND(100); -- 返回一个基于种子值100的随机浮点数
-
FLOOR(RAND() * (max - min + 1) + min):这是一个常见的用于生成指定范围内随机整数的方法。使用RAND()函数结合FLOOR()函数来生成随机整数,通过设置max和min来指定范围。
SELECT FLOOR(RAND() * (100 - 1 + 1) + 1); -- 返回1到100之间的随机整数