存储过程:一组为了完成某个特定功能的SQL语句集。
什么是储存过程:
存储过程是一个可编程的函数,在数据库中保存并创建。
由sql语句和一些特殊控制结构组成。
当需要在不同应用或者平台上执行相同的函数,后者封装特定的功能时,存储过程就非常有用。
数据库中的存储过程可以看做是对偏差中对象方法的模拟。
允许控制数据的方式访问。
优点:
1、存储过程执行速度较快。只需要编译一次。
2、存储过程可以重复使用。
3、存储过程可以用流程控制语句编写,灵活,可以完成复杂的判断和运算。
4、安全性高,可设定只有一些用户才具有对指定存储过程的使用权。
5、存储过程能减少网络流量。
存储过程书写
create procedure 存储过程名称(参数列表)
begin
内容
end
修改结束标识符:delimiter
查看某个数据库下的存储过程:show procedure status where db=数据库名称
调用存储过程:call 存储过程名称
删除存储过程:drop procedure 存储过程名称
存储过程的变量
局部变量:使用declare声明,可以使用default来说明默认值
作用范围:begin-end语句块之间有效
用户变量:使用 @开始,形式为“@变量名”
作用范围:用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效。当当前连接断开后,其所定义的用户变量都会消失。
会话变量:
(@@session.)
会话变量又称为session变量,会话变量的作用范围与用户变量一样,在当前连接。当连接断开后,所有的会话变量都被销毁。
全局变量:
(@@global.)
全局变量不是由用户的程序定义的,而是在服务器级定义的。当服务器启动时,将所有全局变量初始化。全局变量作用于服务器的整个生命周期。只有具有super权限才可以设置全局变量。
变量set语句(赋值)
set 变量名字 := 值;
select into 语句把选定的列值直接存储到变量中,只有单一的行可以被取回。
写法:select 列名1,列名2,…列名N into 变量1,变量2,…变量N
from 表名 where 过滤条件
参数类型
in 输入参数(默认)
out 输出参数
inout 输入输出参数
msql数据类型
tinyint
smallint
int(★)
bigint
varchar(★)|char
varchar:可变长度 mysql的方言 varchar(20): 存放abc 只会占用三个
char:固定长度 char(20) 存放abc 占用20个
float|double
注意:double(5,2):该小数长度为5个,小数占2个 最大值:999.99