当前位置:  首页>> 技术小册>> MySQL从入门到精通(三)

10.1 MySQL函数

在MySQL中,函数(Functions)是执行特定操作并返回结果值的预定义SQL代码块。这些函数极大地丰富了SQL语言的能力,使得数据处理、查询优化、数据验证等方面的工作变得更加高效和便捷。MySQL支持多种类型的函数,包括数学函数、字符串函数、日期和时间函数、条件函数、聚合函数等。本章将详细介绍MySQL中几类常用函数的用法和示例,帮助读者从入门到精通MySQL函数的使用。

10.1.1 数学函数

数学函数用于执行各种数学计算,如四则运算、幂运算、三角函数等。常见的数学函数包括:

  • ABS(x): 返回x的绝对值。
  • CEIL(x)CEILING(x): 返回不小于x的最小整数。
  • FLOOR(x): 返回不大于x的最大整数。
  • RAND(): 返回一个0到1之间的随机浮点数。
  • ROUND(x, d): 对x进行四舍五入,保留d位小数。如果省略d,则默认保留到整数。
  • POW(x, y)POWER(x, y): 返回x的y次幂。

示例

  1. SELECT ABS(-10), CEIL(10.2), FLOOR(10.7), RAND(), ROUND(123.4567, 2), POW(2, 3) AS Result;

10.1.2 字符串函数

字符串函数用于处理文本数据,如拼接、截取、查找、替换等。常用的字符串函数有:

  • CONCAT(str1, str2, ...): 将多个字符串值连接成一个字符串。
  • LENGTH(str): 返回字符串的长度(字节数),对于多字节字符集(如UTF-8),可能不等于字符数。
  • CHAR_LENGTH(str)CHARACTER_LENGTH(str): 返回字符串的字符数。
  • LOWER(str): 将字符串转换为小写。
  • UPPER(str): 将字符串转换为大写。
  • SUBSTRING(str, pos, len): 从字符串str的pos位置开始,截取长度为len的子字符串。
  • REPLACE(str, from_str, to_str): 在字符串str中查找所有from_str并替换为to_str。

示例

  1. SELECT CONCAT('Hello', ' ', 'World'), LENGTH('你好'), CHAR_LENGTH('你好'), LOWER('MySQL'), UPPER('mysql'), SUBSTRING('Hello World', 7, 5), REPLACE('apple pie', 'pie', 'cake') AS Result;

10.1.3 日期和时间函数

日期和时间函数用于处理日期和时间的值,如获取当前日期、时间,格式化日期时间,计算日期之间的差异等。

  • NOW(): 返回当前的日期和时间。
  • CURDATE(): 返回当前的日期(不包含时间)。
  • CURTIME(): 返回当前的时间(不包含日期)。
  • DATE_FORMAT(date, format): 根据指定的格式显示日期。
  • DATEDIFF(end_date, start_date): 返回两个日期之间的天数差。
  • TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2): 返回两个时间戳之间的差异,unit可以是SECOND、MINUTE、HOUR等。

示例

  1. SELECT NOW(), CURDATE(), CURTIME(), DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'), DATEDIFF('2023-04-01', '2023-03-31'), TIMESTAMPDIFF(DAY, '2023-03-31 23:59:59', '2023-04-01 00:00:01');

10.1.4 条件函数

条件函数根据给定的条件返回不同的值,常见的条件函数有:

  • IF(condition, value_if_true, value_if_false): 如果condition为真,则返回value_if_true,否则返回value_if_false。
  • CASE 语句:更复杂的条件逻辑,可以匹配多个条件。

CASE 语句示例

  1. SELECT
  2. name,
  3. score,
  4. CASE
  5. WHEN score >= 90 THEN 'A'
  6. WHEN score >= 80 THEN 'B'
  7. WHEN score >= 70 THEN 'C'
  8. ELSE 'D'
  9. END AS grade
  10. FROM students;

10.1.5 聚合函数

聚合函数用于对一组值执行计算并返回单个值,常用于统计信息的提取。

  • COUNT(expr): 返回expr中非NULL值的数量。
  • SUM(column): 返回column中值的总和。
  • AVG(column): 返回column中值的平均值。
  • MAX(column): 返回column中的最大值。
  • MIN(column): 返回column中的最小值。

示例

  1. SELECT
  2. COUNT(*) AS total_students,
  3. SUM(score) AS total_score,
  4. AVG(score) AS average_score,
  5. MAX(score) AS highest_score,
  6. MIN(score) AS lowest_score
  7. FROM students;

10.1.6 自定义函数

除了上述内置函数外,MySQL还支持用户自定义函数(UDF, User-Defined Functions)。通过自定义函数,用户可以扩展MySQL的功能,实现复杂的业务逻辑。自定义函数可以使用SQL语句、过程式语言(如C/C++)编写,并在MySQL中注册后使用。

创建自定义函数的基本语法如下:

  1. CREATE FUNCTION function_name (parameters)
  2. RETURNS return_type
  3. [characteristic ...]
  4. BEGIN
  5. -- 函数体,包含SQL语句
  6. END;

由于自定义函数的编写和实现涉及较深的MySQL编程知识,这里不再展开具体示例,但了解这一特性对于高级MySQL开发者来说是必要的。

总结

MySQL函数是SQL查询中不可或缺的一部分,它们提供了丰富的数据处理能力,使得数据库操作更加灵活和强大。通过掌握数学函数、字符串函数、日期和时间函数、条件函数、聚合函数等常用函数,以及了解自定义函数的基本概念,读者可以更加高效地编写SQL查询,提升数据库应用的性能和可维护性。希望本章内容能够帮助读者从入门到精通MySQL函数的使用,为数据库开发和应用打下坚实的基础。


该分类下的相关小册推荐: