数据库MySQL/mariadb知识点——函数

Posted Welcome My blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库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

  

以上是关于数据库MySQL/mariadb知识点——函数的主要内容,如果未能解决你的问题,请参考以下文章

MySQL/MariaDB基础知识

数据库MySQL/mariadb知识点——操作篇数据操作语句

mysql/mariadb知识点总结 之 数据库变量(参数)管理

mysql/mariadb知识点总结 之 数据库变量(参数)管理

数据库MySQL/mariadb知识点——日志记录二进制日志

数据库MySQL/mariadb知识点——数据类型