MySQL数据库自定义函数与存储过程的操作与区别

一,自定义函数
1、概述:存储着一系列的sql语句,调用函数就是一次性执行这些sql语句,类似于批处理sql语句,经过编译创建并且保存在数据库中,用户可以通过指定函数的名字并且给定参数来调用执行。。
2、特点:降低sql语句重复;返回值有且只有一个。
3、自定义函数的基本操作
(1)、创建自定义函数:
语法:delimiter 修改结束符号
create function (if not exists)函数名(参数 参数类型) 可以自定义一个没有参数的函数。
returns 返回值(有且只有一个)
begin
函数体
return 值;
end 结束符号
(2)、函数的调用:
使用select关键字
调用无参函数语法:select 函数名();
调用有参函数语法:select 函数名(参数);
(3)、查看函数:
使用show关键字
查看创建函数语句语法:show create function 函数名;
查看指定数据库下所有函数语法:show function status [like ‘pattern’];
(4)、删除函数
使用关键字drop
语法:drop function (if exists) 函数名;
4、自定义函数变量的使用
(1)、全局变量
set @变量名=值;
(2)、局部变量:
declare 变量名 类型;
注意:局部变量作用范围只是在函数begin…end的方法体中,并且在begin…end之前定义。
(3)、给变量赋值:
set 变量名=值;
select 值 from 表名 into 变量名;
5、流程控制语句在自定义函数中的使用
(1)、分类
if语句、case … when语句、while … do语句
(2)、使用
if语句:进行条件判断,根据是否满足条件,将执行不同的语句
语法:if 条件判断语句 then 不同条件的执行语句
end if;(一定要结束if循环)
如果这个message的值为是,就执行then 语句。 MySQL数据库自定义函数与存储过程的操作与区别
case语句:进行条件判断,用以比if语句更加复杂的条件判断
语法:case 判断条件的变量
when 变量的取值 then 不同取值的执行语句
(when 变量的取值 then 不同取值的执行语句)
end case;(一定要结束case循环)
注意:如果在case 后面写变量名的话,那么在when后面就直接赋值;
如果case后面没有写变量名,when后面就要写变量名=值。这种方式是后者的写法。 MySQL数据库自定义函数与存储过程的操作与区别
while语句:满足条件时,执行循环的语句
语法:while 循环执行的条件 do
循环的执行语句
end while;(一定要结束while循环)
使用while语句创建一个求和函数,求0–10的和; MySQL数据库自定义函数与存储过程的操作与区别
二、存储过程
1、概述:一组可编程的函数,是为了完成特定功能的SQL语句集合,经过编译创建并且保存在数据库中,用户可以通过指定存储过程的名字并且给定参数来调用执行。
2、优点:
(1)、将重复性很高的一些操作封装到一个存储过程中,简化了对这些SQL语句的引用;
(2)、批量处理sql语句
(3)、统一接口,确保数据的安全性
3、参数类型
(1)、in输入参数:表示调用存储过程的时候向存储过程传值;
(2)、out输出参数:表示调用存储过程的时候存储过程传出值;
(3)、inout输入输出参数:既表示调用存储过程的时候向存储过程传值,又表示调用存储过程的时候存储过程传出值。
4,基本操作:
(1)、创建存储过程
语法:delimiter 修改结束符号
create procedure 存储过程名(in/out/inout 参数名 参数类型)
begin
(过程体)
end;
(2)、删除存储过程
语法:drop procedure 存储过程名
(3)、查看存储过程
查看数据库中所有存储过程语法:show procedure status;
查看指定数据库下存储过程语法:show procedure status where database=数据库名;
(4)、调用存储过程
语法:call 存储过程名(传参数)
注意:if语句、case … when语句、while … do语句皆可以在存储过程中使用,上面已经列举这三个循环语句的使用。
三、自定义函数与存过程的区别:
1、含义不同:
自定义函数:存储一个或多个sql语句组成的子程序
存储过程:sql语句和可选控制语句的集合
2、调用方式不同:
自定义函数:使用select关键字
存储过程:使用call关键字
3、参数类型不同:
自定义函数:可以没有参数,也可以有参数,当有参数时,只能是输入参数,需要声明返回值类型,并且函数有且只有一个返回值
存储过程:参数有in输入参数,out输出参数,inout输入输出参数,不需要声明返回值类型,返回值可以有多个,也可以没有返回值。

MySQL数据库中自定义函数和存储过程简单总结下来就这么多知识,如果有不对的地方或者该博客还没有总结出来的关于MySQL数据库自定义函数和存储过程的相关内容,请给予批评与指正。