函数

含义:
一组预先编译好的sql语句的集合,理解成批处理语句
好处:
1、提高代码的重用性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
函数和储存过程的区别:
存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新
函数:有且仅有1个返回,适合做处理批量数据后返回一个结果

一、创建语法

CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
		函数体
END
注意:
1. 函数名(参数列表)包含两部分:参数名 参数类型

2. 函数体:肯定会有return语句,如果没有会报错。写法:return 值;
				如果return语句没有放在函数体的最后也不报错,但不建议。

3.函数体中仅有一句话,则可以省略begin end

4.使用delimiter语句设置结束标记

二、调用语法

select 函数名(参数列表)

-------------------------------------------------案例演示:----------------------------------------------------
1.无参有返回
案例:返回boys表的数据量

delimiter $ #设置结束标记

#创建函数myfun1,返回一个INT类型的结果,必须是returns 参数类型
#如果客户端工具不能成功创建函数,需要去原始mysql的命令行执行
CREATE	FUNCTION myfun1() RETURNS INT 
BEGIN
	DECLARE c INT DEFAULT 0;#定义变量c,声明变量
	SELECT COUNT(1) INTO c#为变量c赋值
	FROM beauty;
	RETURN c;#必须要有return语句,返回变量值
END $

#调用函数		
select myfun1();

结果:

mysql除函数 mysql删除函数_mysql


2.有参有返回

案例1:根据女生的姓名,返回男朋友的名字

#创建函数,返回一个RETURNS varchar(20)类型的值
CREATE FUNCTION myfun2 (girlname varchar(20)) RETURNS varchar(20)
BEGIN 
	DECLARE m VARCHAR(20) DEFAULT NULL;#声明变量m
	select b.boyName into m 	#将查询的值,赋予变量m
	FROM beauty g JOIN boys b
	ON g.boyfrind_id=b.id
	WHERE g.`name`=girlname;#g.`name`等于输入的变量girlname
	return m;#将值返回给自定义的变量m
END $
select myfun2('小昭')

结果:

mysql除函数 mysql删除函数_参数类型_02


经典案例3:

创建函数,实现传入两个float,返回二者之和

#如果客户端工具不能成功创建函数,需要去原始mysql的命令行执行
CREATE FUNCTION myfun3(a float,b float) returns float
BEGIN 
	DECLARE c FLOAT DEFAULT 0;#声明变量c,用来存放二者之和
	set c=a+b;#设置变量c,等于变量a+变量b
	RETURN c;
END $
select myfun3(2,6)#求2,6的和,小数也可以求

结果:

mysql除函数 mysql删除函数_mysql_03

三、查看函数

SHOW CREATE FUNCTION 函数名

四、删除函数

DROP FUNCTION 函数名