函数
函数概述
-
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();