当前位置: 首页 > news >正文

MySQL——存储(有难度)

一、存储的介绍
1、什么是存储过程?

存储过程是实现某个特点功能的sql语句的集合,编译后的存储过程会保存在数据中,通过存储过程的名称反复的调用执行。

2、存储过程的优点?

t(1)存储过程创建后,就可以反复的调用和使用,不需要重新写复杂的语句

(2)创建,修改存储过程不会对数据有任何的影响

(3)存储过程可以通过输入参数返回输出值

(4)通过存储过程中加入控制语句,可以加强sql语句的功能性和灵活性

(5)对于单个l语句增删改查,可以直接封装一个集合中,存储过程一旦创建就可以直接调用,且可可以重复调用

(6)单个sql语句每一次执行都需要对数据进行编译,而存储过程被创建只需要编译一次,后续即可调用

(7)创建的存储过程,可以重复进行调用,可以减少数据库开发人员的工作量

(8)防止sql 注入

(9)造数据(重点)
三、存储常用的语句
1、查看已经创建的存储结构
格式:show create procedure 存储名;
show create procedure c1;
2、查看所有已经创建好的存储
show PROCEDURE status ;
3、指定数据库查询存储
格式:
show PROCEDURE status where db="库名";
如:
show PROCEDURE status where db="ck1";
4、删除存储
格式:drop PROCEDURE 存储名;
如:
drop PROCEDURE c1 ;

二、存储的格式
格式:
image

(1)无参数格式
格式:
格式:
delimiter// #分隔符
create procedure 存储名称() #创建存储 名称 (参数 in out into)
BEGIN #开始
sql语句
end #结束
// #分隔符

call 存储名称() #call 调用 存储名称()
如:
delimiter// #分隔符
create procedure c1() #创建存储 名称 (参数 in out into)
BEGIN #开始
select * from emp ; #SQL语句1
select * from dept ; #sql语句2
end #结束
// #分隔符

call c1() #call 调用 存储名称()
(2)带in参数
格式
delimiter// #分隔符
drop PROCEDURE if EXISTS 存储名称; # 判断是否存在,存在就删除,增加健壮性
create procedure 存储名(in 变量名 字符类型(字符长度)) #创建存储 名称 (参数 in out into)
BEGIN #开始
select * from 表名 where 字段名=变量名; #SQL语句1
end #结束
// #分隔符

call 存储名(变量) #call 调用 存储名称()
如:
delimiter// #分隔符
drop PROCEDURE if EXISTS c2; # 判断是否存在,存在就删除,增加健壮性
create procedure c2(in x int(20)) #创建存储 名称 (参数 in out into)
BEGIN #开始
select * from emp where sid=x; #SQL语句1
end #结束
// #分隔符

call c2(1568) #call 调用 存储名称()
image

(3)带out 参数

a、变量赋值:
select 字段 into 变量名 from 表名 where 条件
b、set @变量名
c、set @变量名=值;
d、select @变量名 查询变量,名
如:
delimiter// #分隔符
drop PROCEDURE if EXISTS c2; # 判断是否存在,存在就删除,增加健壮性
create procedure c2(OUT y int(20)) #创建存储 名称 (参数 in out into)
BEGIN #开始
select dept2 into y from emp where sid=1568; #SQL语句1
end #结束
// #分隔符
call c2(@y) #调用返回的变量名
select @y #查看变量名
image

(4)带in ,out参数

delimiter// #分隔符
drop PROCEDURE if EXISTS c2; # 判断是否存在,存在就删除,增加健壮性
create procedure c2(in x int(20),OUT y int(20)) #创建存储 名称 (参数 in out into)
BEGIN #开始
select dept2 into y from emp where sid=x; #SQL语句1
end #结束
// #分隔符
call c2(1568,@y) #调用返回的变量名
select @y #查看
image

(5)带inout 参数
delimiter// #分隔符
drop PROCEDURE if EXISTS c2; # 判断是否存在,存在就删除,增加健壮性
create procedure c2(inout m int(20)) #创建存储 名称 (参数 in out into)
BEGIN #开始
set m=m+1;
end #结束
// #分隔符
set @m=20 #设置一个值,传入
call c2(@m) #调用存储
select @m #查看返回值
image

备注:如果存储中要输入中文 CHARACTER set utf8(加在create 的后面)

http://www.jsqmd.com/news/289808/

相关文章:

  • 2026年最新实测工业存储设备优选:模具架/工具柜/料架/钳工工作台厂家优质清单盘点
  • 2026北美黑胡桃木家具优质推荐榜
  • K8s集群又崩了?我们500人团队用Sealos后,故障率从月均8次降到0
  • 【图像隐写】LSB+DWT+DCT图像和音频水印【含Matlab源码 15007期】
  • boom question 题解
  • 2026年百度竞价广告开户推广代运营综合推荐:聚焦核心的昊客网络成行业新星。
  • 【实战项目】 汽车音响系统设计
  • 2026年1月酱香白酒深度测评:酱香酒加盟品牌有哪些?
  • 【实战项目】 触觉反馈在医疗康复中的应用
  • 【实战项目】 基于Hadoop教育平台的设计与实现
  • 用一只“小”模型让老照片自己开口:3.7B 多模态 LLM 的「语音驱动人像」端侧落地笔记
  • 用纯 NLP 打造「零样本」时序预测模型:文本化序列 + LLM 的实战路线
  • 【实战项目】 JavaWeb实现的商品库存管理系统设计
  • 基于51单片机的蓝牙防丢器设计(毕业设计+程序设计+实物+原理图+论文指导)
  • 手术机器人的“眼睛”与“记忆”:动作捕捉赋能高精度骨科植入新范式 | 山东大学双模式机器人研究案例
  • 基于STM32的高楼火灾预警系统设计(毕业设计指导+程序设计+原理图+论文指导)
  • 【实战项目】 软件性能测试在高并发系统中的应用
  • 汽车电子产业加速演进:现状、挑战与发展方向
  • 2026最新智能安检门/X光安检机/升降柱十大厂家盘点:合规适配与场景化服务风向标
  • 2026 芜湖市 GEO 优化公司实力盘点:三十六行网络科技领跑,赋能制造与跨境企业精准破局
  • G-Star 精选开源项目推荐|第六期
  • 2025年中国高精度定位技术总结分析(上篇)
  • 【实战项目】 网络切片在5G中的优化
  • 【实战项目】 工业智能环保监测系统
  • 图论-最小生成树
  • AI设计:从智能工具到实践落地的实用指南
  • 实用指南:【每天一个AI小知识】:什么是大语言模型(LLM)?
  • 【实战项目】 Java实现的XSS攻击防御系统设计
  • 【实战项目】 基于STM单片机的电子脉搏仪设计与实现
  • 二分查找(九)2300. 咒语和药水的成功对数