肖sir__mysql之存储__012

2023-09-18 11:29:30

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
在这里插入图片描述

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<x) do
insert into sjb VALUES ( i,i+10000);
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、具体怎么造数?

更多推荐

JAVA开发技术能力和学历哪个重要?

Java开发技术能力和学历都是Java开发人员必须具备的基本条件,二者之间没有谁更加重要的绝对答案。不同的人在不同的时期,所处的不同环境下会给出不同的答案。下面从多个角度进行讨论,探究Java开发技术能力和学历哪个更重要。1、招聘角度从企业的招聘需求来看,技术能力在某些情况下更为重要。随着科技的不断发展,对于一些前沿技

8位微控制器上的轻量级SM2加密算法实现:C语言详细指南与完整代码解析

引言在当今的数字化世界中,安全性是每个系统的核心。无论是智能家居、医疗设备还是工业自动化,每个设备都需要确保数据的安全性和完整性。对于许多应用来说,使用高级的微控制器或处理器可能是不切实际的,因为它们可能会增加成本、功耗和尺寸。这就是为什么8位微控制器仍然在许多应用中占据着重要的地位。但是,8位微控制器的计算能力有限,

天翎知识管理系统:支持多种文件类型,整合各类知识资源

编者按:知识管理系统支持多种格式可以更好地适应不同的业务需求和行业规范,同时也可以避免文件格式不兼容带来的麻烦。本文将介绍天翎知识管理系统的文件类型支持,包括文档格式的在线预览及在线编辑,以便用户可以更全面地了解天翎系统。知识管理系统文件类型支持在线预览天翎知识管理系统支持多种文档格式在线预览,可以让用户在不下载文档的

Mybatis面试题(三)

文章目录前言一、Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?二、当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定pojo?三、模糊查询like语句该怎么写四、通常一个Xml映射文件,都会写一个Dao接口与之对应,Dao的工作原理,是否可以重载

安卓毕业设计各种app项目,Android毕设设计,Android课程设计,毕业论文

作为一位从事软件开发多年的专业人士,您积累了丰富的经验和技能,解决了许多不同类型的问题。除了开发原创项目,您还愿意分享您的知识,指导实习生和在校生。这种乐于助人的行为对于行业的发展和新一代软件开发者的成长都起着积极的促进作用。辅导实习生或在校生有许多好处。首先,您可以通过与他们分享您的经验和见解,帮助他们更好地理解软件

Zookeeper运维

我是一个目录1.参数说明2.Zookeeper优化建议3.Zookeeper性能查看4.建议1.参数说明工作节点瞬间压力大,导致和集群通信出现延迟,被踢出节点,瞬间释放的连接立即又连接到另外节点,最终集群挂掉。加了一些延迟配置后,集群稳定。参数说明tickTime=2000Zookeeper服务器之间或客户端与服务器之

BD就业复习第四天

1.布隆过滤器怎么实现去重布隆过滤器是一种用于快速检查一个元素是否可能存在于一个大集合中的数据结构,但它并不适用于精确去重。因为布隆过滤器具有一定的误判率(可能会将不存在的元素误判为存在),所以不能确保完全的去重。但可以结合其他数据结构来实现近似的去重功能。以下是使用布隆过滤器进行近似去重的一般步骤:初始化布隆过滤器:

Android Key/Trust Store研究+ssl证书密钥

前言:软件搞环境涉及到了中间件thaltrustzonecertificatekey,翻译过来是thal信任区域证书密钥,不明白这是什么,学习一下ssl证书密钥SSL密钥是SSL加密通信中的重要组成部分。SSL证书通过加密算法生成,用于保护网络通信的安全性和私密性。密钥是一种密码学算法中的关键元素,用于加密和解密敏感信

mac安装运行superset及踩坑解决过程

介绍ApacheSuperset是一个现代的企业级商业智能Web应用程序。它快速、轻量、直观,并加载了各种选项,使所有技能的用户都可以轻松探索和可视化他们的数据,从简单的饼图到高度详细的Deck.gl地理空间图表。安装首先安装自制homebrew安装管理器,然后运行以下命令:brewinstallreadlinepkg

Java版本spring cloud + spring boot企业电子招投标系统源代码

项目说明随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要求;通过电子化平台提高招投标工作的公开性和透明性;通过电子化招投标,使得招标采购的质量更高、速度

Week2:包含 min 函数的栈

1️⃣题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min、push及pop的时间复杂度都是O(1)。示例:MinStackminStack=newMinStack();minStack.push(-2);minStack.push(0);minStack.push(-3)

热文推荐