存储过程
存储过程有哪些优点:
1、存储过程是一个预编译的sql语句
优点:(1):存储过程预编译过得,执行效率高
(2):存储过程的代码直接放在数据库中,通过存储过程的名称直接调用
(3):安全性表较高,执行存储需要一定权限用户
(4):存储过程可以重复使用,可减少开发人员的工作量
(5):对于单个增删改查语句可以直接封装成一个函数,或者一个集合中,需要的时候可以直接调用,也可以重复使用
(6):单个sql语句每次执行都需要数据进行编译,而存储过程被创建只需要编译一次后续可以直接调用
(7):可以防止sql注入
缺点:移植性比较差
drop table if exists mm; create table mm(id int(20) PRIMARY key auto_increment,score int(20)); #创建mm表 insert into mm values(1,67),(2,88); insert into mm values(3,90),(4,79); insert into mm values(5,80),(6,97); drop procedure if exists duoceshi31; #如果存在duoceshi31这个存储过程名的时候就删除 create procedure duoceshi31(n int) #创建一个存储过程名称叫duoceshi31,n是一个变量或者形式参数,int是数据类为整型 begin #存储过程的开始 declare i int(20) default(select count(*) from mm); #声明变量i的默认值是表的行数 #select * from mm; #select * from mm where id =6; #不带参数的调用 #select * from mm where id=n; #带参数的调用
if单分支语句 if n=0 then #如果n=0时,统计表中的行数 select count(*) from mm; else select sum(score) from mm; end if; if多分支语句 if n=0 then select count(*) from mm; else if n>0 and n<=10 then select * from mm order by score; else if n>10 then select avg(score) from mm; else select * from mm; end if; end if; end if; while循环 while n>i DO insert into mm(score)values(88); set i=i+1; end while; select * from mm; end #存储过程的结束 call duoceshi31(8); #调用存储过程
if 条件判断语句
标签:存储,end,05,mm,duoceshi31,MySQL,过程,select From: https://www.cnblogs.com/jjm414/p/17327478.html