MySQL学习笔记-自定义函数
1.自定义函数简介
自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同
自定义函数的两个必要条件:(1)参数 (2)返回值
自定义函数:
创建自定义函数
CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body
关于函数体:
1.函数体可以由合法的SQL语句构成;
2.函数体可以是简单的SELECT或INSERT语句;
3.函数体如果为复合结构则使用BEGIN...END语句;
4.复合结构可以包含声明、循环、控制结构。
2.创建不带参数的自定义函数
创建日期时间为年月日点分秒格式
mysql> CREATE FUNCTION f1() RETURNS VARCHAR(30) -> RETURN DATE_FORMAT(NOW(),‘%Y年%m月%d日 %H点:%i分:%s秒‘); Query OK, 0 rows affected (0.00 sec) mysql> SELECT f1(); +-------------------------------------+ | f1() | +-------------------------------------+ | 2016年11月28日 08点:34分:55秒 | +-------------------------------------+
3.创建带有参数的自定义函数
创建可以计算2个数的平均值的函数
mysql> CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) -> RETURNS FLOAT(10,2) UNSIGNED -> RETURN (num1+num2)/2; Query OK, 0 rows affected (0.00 sec) mysql> SELECT f2(10,16); +-----------+ | f2(10,16) | +-----------+ | 13.00 | +-----------+
4.创建具有符合结构函数体的自定义函数
可以通过“DELIMITER 分隔符”修改MySQL中的默认结束符
删除函数:
DROP FUNCTION [IF EXISTS] function_name
如果自定义函数存在符合结构,多个语句,函数体要包含在BEGIN...END内,同时,需要通过DELIMITER将默认的结束符 ; 修改成其他符号,如:// $$ ,以免函数由于语句结尾的 ; 号导致中断
mysql> DELIMITER // mysql> CREATE FUNCTION adduser(username VARCHAR(20)) -> RETURNS INT UNSIGNED -> BEGIN -> INSERT test(username) VALUES(username); -> RETURN LAST_INSERT_ID(); -> END -> // mysql> DELIMITER ; mysql> SELECT adduser(‘Tom‘); +----------------+ | adduser(‘Tom‘) | +----------------+ | 3 | +----------------+ mysql> SELECT adduser(‘Rool‘); +-----------------+ | adduser(‘Rool‘) | +-----------------+ | 4 | +-----------------+ mysql> SELECT * FROM user; +----+----------+ | id | username | +----+----------+ | 1 | Drive | | 2 | Cve | | 3 | Tom | | 4 | Rool | +----+----------+
时间: 2024-10-23 05:56:11