函数

函数概述

  • FUNCTION 函数

  • 函数分为系统内置函数和自定义函数

    • 系统内置函数参考:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
    • 自定义函数:user-defined function UDF,保存在mysql.proc表中
  • 参数可以有多个,也可以没有参数

  • 无论有无参数,小括号()是必须的

  • 函数在定义和引用时不区分大小写,通常写为大写。

  • 必须有且只有一个返回值

创建函数语法

CREATE [AGGREGATE] FUNCTION function_name(parameter_name type,[parameter_name type,...]) RETURNS {STRING|INTEGER|REAL} [characteristic ...] runtime_body

创建函数范例

#无参UDF,创建了一个名为simpleFun的函数,字符数量为VARCHAR(20),返回的值是Hello World
CREATE FUNCTION simpleFun() RETURNS VARCHAR(20) RETURN "Hello World"; 

#有参数UDF
DELIMITER // #"//"表示后续的字段以"//"为结束符,而不以";"为结束符,除了"//"以外,也可以使用"$$"等符号来代替"//"
CREATE FUNCTION deleteById(id SMALLINT UNSIGNED) RETURNS VARCHAR(20) 
BEGIN
 DELETE FROM students WHERE stuid = id;
 RETURN (SELECT COUNT(*) FROM students);
END//
DELIMITER ; #将结束符再修改回来

查看自定义的函数

SHOW FUNCTION STATUS\G;

查看函数定义

SHOW CREATE FUNCTION function_name

调用函数

SELECT [db_name.]function_name();

删除函数

DROP FUNCTION [db_name.]function_name;

常用内置函数

MySQL 提供了许多内置函数,用于执行各种操作,包括字符串处理、数学计算、日期和时间处理等。

以下只是一部分MySQL内置函数的示例,实际上MySQL提供了更多的函数来满足不同的需求。你可以查阅MySQL官方文档以获取完整的函数列表和详细说明。

以下是一些常用的MySQL内置函数:

DATABASE()

  • 显示当前所处的数据库
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+

mysql> use db2;

mysql> select database();
+------------+
| database() |
+------------+
| db2        |
+------------+

数学函数

ROUND(num, decimals) # 四舍五入。

CEIL(num) # 向上取整。

FLOOR(num) # 向下取整。

ABS(num) # 返回绝对值。

RAND() # 返回一个随机数。

日期和时间函数:

NOW() # 返回当前日期和时间。

CURDATE() # 返回当前日期。

CURTIME() # 返回当前时间。

DATE_FORMAT(date, format) # 格式化日期。

DATEDIFF(date1, date2) # 返回两个日期之间的天数差。

TIMESTAMPDIFF(unit, start_datetime, end_datetime) # 返回两个日期之间的时间差。

条件函数

IF(expr, true_value, false_value) # 如果条件为真,则返回 true_value,否则返回 false_value

CASE WHEN condition THEN result ELSE else_result END # 类似于 switch-case 结构。

聚合函数:

COUNT(expr) # 计算符合条件的行数。

SUM(expr) # 对指定列求和。

AVG(expr) # 计算指定列的平均值。

MAX(expr) # 返回指定列的最大值。

MIN(expr) # 返回指定列的最小值。

其他函数:

IFNULL(expr, replacement) # 如果表达式为NULL,则返回替代值。

COALESCE(expr1, expr2, ...) # 返回第一个非NULL表达式的值

CONVERT(expr, type) # 将表达式转换为指定的数据类型。

CURRENT_USER()

CURRENT_USER() 是一个MySQL的内置函数,用于返回当前会话用户的用户名和主机名。这个函数返回一个字符串,包含当前用户的用户名和主机名,格式为 'user'@'host'

例如,如果当前用户是 ‘john’,并且连接的主机是 ’localhost’,那么 CURRENT_USER() 返回的值将是 'john'@'localhost'

你可以在SQL查询中使用这个函数来获取当前用户的信息,例如:

SELECT CURRENT_USER();

这将返回当前用户的用户名和主机名。请注意,这个函数不需要括号,因为它不需要任何参数。

VERSION()

返回当前MySQL服务器的版本信息

SELECT VERSION();