MySQL和数据库系列文章目录
【MySQL和数据库】MySQL & database 第一章:数据库的安装与卸载
【MySQL和数据库】MySQL & database 第二章:数据库与MySQL的基本概述
【MySQL和数据库】MySQL & database 第三章:DQL学习(主要是记录的查询)
【MySQL和数据库】MySQL & database 第四章:DML学习(主要是对记录的增删改)
【MySQL和数据库】MySQL & database 第五章:DDL学习(主要是对库、表、字段的增删改)
【MySQL和数据库】MySQL & database 第六章:TCL学习(主要是针对事务的控制)
【MySQL和数据库】MySQL & database 第七章:视图的学习
【MySQL和数据库】MySQL & database 第八章:MySQL中的变量
【MySQL和数据库】MySQL & database 第九章:存储过程的学习
【MySQL和数据库】MySQL & database 第十章:函数的学习
【MySQL和数据库】MySQL & database 第十一章:流程控制结构
函数
- 含义:一组预先编译好的SQL语句的集合,理解成批处理语句;
- 特点:
- 提高代码的重用性;
- 简化操作;
- 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率;
- 区别:
- 存储过程:可以有零个或多个返回参数,适合批量插入、批量更新;
- 函数:有且仅有 1 个返回参数,适合做处理数据后返回一个结果;
创建语法
delimiter $
create function 函数名(参数列表) returns 返回类型
begin
函数体(包含return语句)
end $
- 参数列表包含两部分:参数名 参数类型;
- 函数体内一定要有return语句,放在任何位置都不会报错;
但是建议放在函数体的最后;
return 值; - 当函数体只有一条语句时,可以省略begin和end;
- 要使用delimiter语句设置结束标记;
调用语法
select 函数名(参数列表);
-
案例1:无参有返回的函数
delimiter $ create function myf1() returns int begin declare c int default 0; select count(*) into c from employees; return c; end $ select myf1() $
-
案例2:有参有返回的函数
delimiter $ create function myf2(deptName varchar(20)) returns double begin declare sal double; select avg(salary) into sal from employees e inner join departments d on e.department_id = d.department_id where d.department_name = deptName; return sal; end $ select myf2('IT') $
查看函数
show create function 函数名;
删除函数
drop function 函数名;