多测师拱墅校区__肖sir__数据库之存储

存储:
一、介绍存储过程
1、什么是存储过程?
定义:存储过程是实现某个特定功能的sql语句的集合,编译后的存储过程会保存在数据库中,通过存储过程的名称可以反复的调用执行。
2、存储过程的优点?
(1)存储创建后,可以反复的调用和使用,不需要重新写sql语句
(2)创建、修改存储的过程不会对数有任何的影响
(3)存储过程可以通过输入参数返回输出值
(4)通过存储过程中加入控制语句,可以加强sql语句的功能性和灵活性
(5)防止sql注入
(6)造数据(重点)
3、在mysql 5.0 版本之后就支持存储过程
4、存储过程是由sql语句和控制语句组成的

=====================================================
二、格式:
delimiter // #分隔符 // 符号
create procedure 存储名( 参数 in ,out ,inout) procedure 存储
BEGIN #开始
mysql 执行语句
end #结束
// #分割符

call 存储名() #call 存储名() 作用:调用整个存储过程

案例:
delimiter // #分隔符
create procedure cc1()
BEGIN
SELECT * from emp ;
select * from dept ;
end
//

call cc1()

========================
三、存储过程的基本语句:
1、查看单个存储过程的详情

格式:show create procedure 存储过程名称
案例:show create procedure cc1;
在这里插入图片描述
2、查看所有已经建好的存储过程详情
格式:show procedure status ;
在这里插入图片描述
3、删除存储过程

格式:drop procedure 存储过程名称
案例:DROP PROCEDURE cc2;
在这里插入图片描述

三、存储过程的运用
1、无参数存储过程
delimiter // #分隔符
create procedure 存储名( 无参数)
BEGIN
执行sql语句
end
//
call 存储名()
案例:
delimiter // #分隔符
create procedure cc2()
BEGIN
SELECT * from emp ;
end
//
call cc1()

====================
2、带in的参数的存储过程

in表示是输入参数
select * from emp
delimiter // #分隔符
create procedure cc3( in x int)
BEGIN
SELECT * from emp where sid=x ;
end
//
call cc3(1880)

====================
3、out输出参数
变量:通过查询结构为变量赋值:
select 字段 |表达式 into 变量名 from 表名 【where 条件】
select @变量名 查看值

案例:
delimiter // #分隔符
create procedure cc4( out x int)
BEGIN
SELECT sid into x from emp where name=‘赵六’ ;
end
//

call cc4(@x)
select @x

===================
4、有in传入数据 out 传出数据
案例:
delimiter // #分隔符
create procedure cc5( in y int ,out x int)
BEGIN
SELECT age into x from emp where sid=y ;
end
//
call cc5(1879,@x)
select @x

===================
5、inout 参数
inout 既可以作为输入值,也可以作为输出值
delimiter // #分隔符
create procedure cc7(inout x int)
BEGIN
set x=x+1;
end
//

set @x=3
call cc7(@x)
select @x
备注:

用户变量:定义语法
普通赋值方法一:
set @变量名:=值 或 set @变量名=值
select @变量名
赋值方法二:
变量:通过查询结构为变量赋值:
select 字段 |表达式 into 变量名 from 表名 【where 条件】
select @变量名 查看值

============================
while 循环语句

while 条件 do
执行语句
end while ;

============================
造数据:
一、通过存储过程在一个指定的空表中插入10条数据

delimiter //
drop procedure if exists cc10 ; #增强健壮性 判断是否存在这个存储
drop table if exists sj;
create procedure cc10()
BEGIN
declare i int DEFAULT 0 ; #变量名称 i int 数据类型 默认0
create table sj(id int(10) ,money int(10));
while (i<10) DO
INSERT into sj(id) VALUES(i);
set i=i+1;
end while;
select * from sj ;
END
//

call cc10()
注释版:
delimiter //
drop procedure if exists cc10 ; #增强健壮性 判断是否存在这个存储
drop table if exists sj; ##增强健壮性 判断是否存在这个表
create procedure cc10() #创建存储过程
BEGIN #开始
declare i int DEFAULT 0 ; #声明变量 #变量名称 i int 数据类型 默认0
create table sj(id int(10) ,money int(10)); #建表
while (i<10) DO #while 循环 条件 do
INSERT into sj(id) VALUES(i); #执行语句
set i=i+1; #每次增加1
end while; #结束循环
select * from sj ; #查询整个表
END #结束整个存储
// #结束符号

call cc10() #调用存储

===================================
造数据优化版本2:
delimiter //
drop procedure if exists cc10 ; #增强健壮性 判断是否存在这个存储
create procedure cc10(in x int) #创建存储过程
BEGIN #开始
declare i int DEFAULT 0 ; #声明变量 #变量名称 i int 数据类型 默认0
drop table sj; ##增强健壮性 判断是否存在这个表
create table sj(id int(10) ,money int(10)); #建表
while (i<x) DO #while 循环 条件 do
INSERT into sj(id) VALUES(i); #执行语句
set i=i+1; #每次增加1
end while; #结束循环
select * from sj ; #查询整个表
END #结束整个存储
// #结束符号

call cc10(1000) #调用存储

===========================
面试题
1、你会存储?
2、你说下存储的结构?
3、存储你在工作中用来作什么? 造数据
4、把造数据的存储背下来?

==================================
if语句:
(1)if语句单分支
格式:
if 条件 then
执行sql1
else
执行sql2
end if
案例:
create PROCEDURE s4(in x int)
BEGIN
if x>5 THEN
select * from dept ;
ELSE
select * from emp ;
end IF;
END
//

call s4(6)

(2)if语句多分支

在if判断语句中,有几个if,一个if 对应着一个end if
if 条件1 then
执行语句1
else if 条件2 then
执行语句2
else if 条件3 then
执行语句3
else
执行语句4
end if;
end if ;
end if ;

案例:
delimiter //
drop procedure if EXISTS s5 ;
create PROCEDURE s5(in x int)
BEGIN
if x>100 THEN
select * from dept ;
ELSE if x<100 and x>50 then
select * from emp ;
ELSE if x<50 and x>10 THEN
select * from emp ,dept where dept1=dept2 ;
ELSE
select * from sc ;
end IF;
end if;
end if;

END
//

call s5(9)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多测师软件测试培训师肖sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值