MySQL/mariadb知识点——函数
函数
函数,就是将一段代码封装到一个结构中,在需要执行该段代码的时候,直接调用该结构(函数)执行即可。此操作,实现了代码的复用。在 MySQL 中,函数有两种,分别为:系统函数和自定义函数。
1、系统函数
顾名思义,系统函数就是系统定义好的函数,在需要的时候,我们直接调用即可。
任何函数都有返回值(对于空函数,我们就认为其返回值为空
),而且在 MySQL 中任何有返回值的操作都是通过select
来操作的,因此 MySQL 的函数调用就是通过select
来实现的。
参考官方文档:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
2、自定义函数(user-defined function:UDF)
自定义函数保存在mysql.proc表中
-
查看UDF列表
SHOW FUNCTIOIN STATUS;
-
查看UDF定义
SHOW CREATE FUNCTION function_name
-
删除UDF
DROP FUNCTION function_name
- 调用自定义函数语法
SELECT function_name(parameter_value,...)
- 为变量赋值
SET parameter_name = value[,parameter_name = value...]
-
查看变量
SELECT INTO parameter_name
示例1:无参UDF
MariaDB [testdb]> CREATE FUNCTION simpleFun() RETURNS VARCHAR(20) RETURN "Hello World!“;
示例2:有参数UDF
MariaDB [testdb]> DELIMITER // #修改结束符为// MariaDB [testdb]>CREATE FUNCTION deleteById(uid SMALLINT UNSIGNED) RETURNS VARCHAR(20) -> BEGIN ->DELETE FROM students WHERE stuid = uid; -> RETURN (SELECT COUNT(uid) FROM students); -> END// Query OK, 0 rows affected (0.01 sec) MariaDB [testdb]> DELIMITER ; #定义完函数后再修改回来
示例3:
自定义函数中定义局部变量语法:
DECLARE 变量1[,变量2,... ]变量类型 [DEFAULT 默认值]
说明:局部变量的作用范围是在BEGIN...END程序中,而且定义局部变量语句必须在BEGIN...END的第一行定义
MariaDB [testdb]> DELIMITER // #修改结束符为// MariaDB [testdb]> CREATE FUNCTION addTwoNumber(x SMALLINT UNSIGNED, Y SMALLINT UNSIGNED) -> RETURNS SMALLINT -> BEGIN -> DECLARE a, b SMALLINT UNSIGNED DEFAULT 10; -> SET a = x, b = y; -> RETURN a+b; -> END// Query OK, 0 rows affected (0.01 sec) MariaDB [testdb]> DELIMITER ; #定义完函数后再修改回来 MariaDB [testdb]> SELECT addTwoNumber(8,9); #调用UDF求和 +-------------------+ | addTwoNumber(8,9) | +-------------------+ | 17 | +-------------------+
查看函数
查看函数,基本语法为:
SHOW FUNCTION STATUS;
查看函数定义
SHOW CREATE FUNCTION function_name