mysql之存储
一、存储
1、什么是存储过程
定义:存储过程就是实现某个特定功能的sql语句的集合,编译后的存储过程会保存在数据库中,通过存储过程的名称可以反复的调用执行。
2、存储过程的优点?
(1)存储创建后,可以反复的调用,和使用,不需要重新写复杂的sal语句
(2)创建、修改存储过程不会对数据有任何影响
(3)存储过程可以通过输入参数返回输入值
(4)通过存储过程中加入控制语句,可以加强sql语句的功能和灵活性
(5)防止sql注入
(6)造数据(重点)
3、存储在mysql5.0之后支持存储过程
4、格式:
delimiter // 分隔符
create procedure 存储名称 (参数)
begin 开始
存储体
end 结束
// 分隔符
========================》运行
call 存储名称(参数) ===》调用存储过程
案例:
5、存储实战
(1) 查看单个存储过程详情
格式:show create procedure 存储名称
案例:
show create procedure hz ;
截图:
(2)查询所有已经建好的存储过程
格式: show procedure status ;
截图:
(
(3)查询数据库中创建了哪些存储
格式:show procedure STATUS where db=‘库名’;
案例:show procedure STATUS where db=‘hz1’;
(4)删除一个存储过程
格式:drop procedure 存储名
案例:drop procedure hz1
截图:
六、存储体
(1)无参数存储体
delimiter // 分隔符
create procedure hz1() 创建存储名称
BEGIN 开始
select * from emp;
select * from dept;
END 结束
// 分隔符
call hz 调用存储体
(2)有in输入参数
格式:
delimiter //
create procedure (in 变量 字符类型(字符长度) )
BEGIN
select * from emp where dept2= 变量;
END
//
call 存储体(输入参数)
案例:
delimiter // fen
create procedure hz4(in x int(10))
BEGIN
select * from emp where sid=x;
END
//
call hz4(1880)
(3) out 输出
delimiter // fen
create procedure hz7(in x int(10),out y int(10))
BEGIN
select age into y from emp where sid=x;
END
//
call hz7(1880,@y)
select @y
(4)inout 输入输入 是同一个变量
delimiter //
create procedure hz8(inout x int(10))
BEGIN
set x=x+1;
END
//
set @x=2;
call hz8(@x)
select @x
用户变量: