存储过程是一个预编译的SQL语句,优点是模块化的设计,就是说只需要创建一次,以后就可以在程序中多次调用,如果某次操作需要执行多次SQL,,使用存储过程要比单纯SQL语句执行快的多。
存储过程的代码是直接存放于数据库中,通过存储过程名直接调用,减少网络通信。
安全性高:执行存储过程需要一定权限的用户。
缺点:维护麻烦,存储过程相当于提前写好的SQL,但是后续如果业务拓展的话,数据库表结构会发生变化,这些变化就要同步给存储过程,要重新写
创建:
create procedure 存储过程名({参数列表})
begin
写入sql语句
end;
调用:
call 名称({参数})
查寻存储过程:
select * from information_schema.routines where routine_schema='数据库名'; --查询指定数据库的存储过程及状态信息
show create procedure {存储过程名}; --查询某个存储过程的定义
删除存储过程:
drop procedure if exists 存储过程名;
例子:
#创建存储过程
create procedure p1()
begin
select count(*) from student;
end;
#调用
call p1();