函数

函数:类似“加工坊”,将用户传来的参数进行处理后再返回

函数分为:系统函数和自定义函数

1)系统函数:系统自身携带,无需定义,直接使用

2)自定义函数:用户自行定义进行使用

自定义函数

自定义函数格式(4步):

CREATE  FUNCTION  函数名 (参数1,参数2,参数N)
RETURNS 返回值的数据类型
[函数选项]
BEGIN
	函数体;
	RETURN 语句;
END;

1)函数参数尽量避免重名,且参数不需DECLARE声明

2)函数只能返回一个值(有且仅有一个)

3)函数不允许返回结果集,即使是在函数内中也不允许

函数选项 含义
LANGUAGE SQL 默认选项,说明函数体使用SQL语言编写
[NOT] DETERMINISTIC 当函数返回不确定值时,防止复制时的不一致性 默认选项是:NOT DETERMINISTIC
CONTAINS SQL 函数体中不包含读或写数据的语句
(默认)
NO SQL 函数体不包含SQL语句
READS SQL DATA 函数体包含SELECT查询语句,不包含更新语句
MODIFIES SQL DATA 函数体包含数据更新语句
SQL SECURITY 指定函数的执行许可
DEFINER 函数只能由创建者调用
INVOKER 函数可以被其他数据用户调用 (默认值为DEFINER)
COMMENT 为函数添加说明等注释信息

//若包含SELECT语句,需用DECLARE定义一个变量来接受查询结果
//函数总是对同样的输入参数产生同样的结果(则认为是“确定的”)

管理自定义函数

列出查看所有自定义函数信息:

SHOW FUNCTION STATUS;

1)自定义函数较多时,可以使用LIKE进行模糊查询

列出指定函数名的详细信息:

SHOW CREATE FUNCTION 函数名;

1)在指定函数名时不需带上()和参数,直接函数名即可

查看指定数据库中所有自定义函数名

SELECT  name
FROM  mysql.proc
WHERE db=‘数据库名’ AND  TYPE =‘函数库名’

查询指定函数函数的详细信息:

SELECT  *
FROM  information_schema.routines
WHERE  routine_name=‘函数名’;

//函数的信息都保存在information_schema数据库的routines表中

查询指定
删除自定义函数:

DROP FUNCTION 函数名;

1)函数保存的仅仅是函数体(MySQL表达式),不保存任何用户数据

2)自定义函数进行修改时只能先删除,后再建立一个同名函数