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 输出
1、用户变量:
(1)
set @ 变量名:=值 或 set @变量名=值 #设置变量
select @ 变量名:=值 #查询所有变量
(2) 通过查询结果为变量赋值
select 字段名|表达式 into 变量 form 表名 wehre 条件
select @变量名:=值 查询所有变量
2、循环语句
while 条件 do
执行语句
end while
mysql有三种循环:
while …do …end while(讲)
loop…end…loop
repeat…until end repeat
3、声明变量
declare (声明明) i int default 0;
4、增强储存的健壮性:
drop produre if exists 存储名; 判断是否存在这个存储
5、造数据案例:
a、造的数据是指定的行数
delimiter //
drop procedure if EXISTS hz ;
create procedure hz()
BEGIN
DECLARE i int DEFAULT 1 ;
drop table if exists sjb;
create table sjb(id int(10) primary key, incoming int(20));
while (i<20) do
insert into sjb VALUES ( i,i+10000);
set i=i+1;
end WHILE;
select * from sjb;
end
//
call hz()
(2)插入灵活指定的具体数据
delimiter //
drop procedure if EXISTS hz ;
create procedure hz(in x int(10))
BEGIN
DECLARE i int DEFAULT 1 ;
drop table if exists sjb;
create table sjb(id int(10) primary key, incoming int(20));
while (i
set i=i+1;
end WHILE;
select * from sjb;
end
//
call hz(1000)
===========================================
6、if 语句
(1)if 单分支
if 条件 then
执行 sql1语句
else
执行 sql1语句
end if
案例:
delimiter //
drop procedure if EXISTS hz1 ;
create procedure hz1(in x int(10))
BEGIN
if x<10 THEN
select *from emp;
ELSE
select *from dept;
end IF;
end
//
call hz1(11)
(2)if语句多分支
if 条件1 then
sql语句1
else if 条件2 then
sql语句2
else if 条件3 then
sql语句3
else if 条件4 then
sql语句4
else
sql语句5
end if ;
end if ;
end if ;
end if ;
注意:一个if对应一个end if
delimiter //
drop procedure if EXISTS hz1 ;
create procedure hz1(in x int(10))
BEGIN
if x=0 THEN
select *from emp;
else if x=10 then
select *from dept;
else if x=100 then
select *from s;
else if x=1000 then
select *from c;
ELSE
select *from sc;
end IF;
end IF;
end IF;
end IF;
end
//
call hz1(111)
==========
1、你会存储过程?
2、存储的结构?
3、存储你用来干什么?
4、具体怎么造数?