肖sir__mysql之存储__012

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、具体怎么造数?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/138986.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

python项目127.0.0.1:5000访问失败

Windows环境下启动python项目&#xff0c;接口访问失败 解决&#xff1a; 方法1&#xff1a; 将host配成0.0.0.0&#xff0c;并用本机ip端口号访问 python代码示例&#xff1a; from flask import Flaskapp Flask(__name__)app.route(/index) def index():return helloapp.…

有了Spring为什么还需要SpringBoot呢

目录 一、Spring缺点分析 二、什么是Spring Boot 三、Spring Boot的核心功能 3.1 起步依赖 3.2 自动装配 一、Spring缺点分析 1. 配置文件和依赖太多了&#xff01;&#xff01;&#xff01; spring是一个非常优秀的轻量级框架&#xff0c;以IOC&#xff08;控制反转&…

Elasticsearch 8.10 中引入查询规则 - query rules

作者&#xff1a;Kathleen DeRusso 我们很高兴宣布 Elasticsearch 8.10 中的查询规则&#xff01; 查询规则&#xff08;query rules&#xff09;允许你根据正在搜索的查询词或根据作为搜索查询的一部分提供的上下文信息来更改查询。 什么是查询规则&#xff1f; 查询规则&…

vue框架实现表情打分效果

本来今天要实现这个功能 但是在网上查了一下 就csdn上有一个符合要求的 但是他竟然收费,痛心疾首啊 太伤白嫖党的心的 所以我手写了一个这个类似功能的代码 希望能帮到有这个需求的同学们 技术栈是VUE3 用其他技术栈的也可以看 因为逻辑很简单都一样的 // 问卷的虚拟数据 con…

如何用CRM软件系统管理企业客户

客户对企业的重要程度不言而喻。可以说&#xff0c;客户是企业收益的来源和可持续发展的基础&#xff0c;客户的转化率和保留率也与企业的发展息息相关。企业想要成功转化客户&#xff0c;需要经历客户跟踪、挖掘、维护等一系列过程。下面我们来说说&#xff0c;CRM客户管理系统…

Flask框架-2-[单聊]: flask-socketio实现websocket的功能,实现单对单聊天,flask实现单聊功能

一、概述和项目结构 在使用flask-socketio实现单聊时&#xff0c;需要将会话id(sid) 与用户进行绑定&#xff0c;通过emit(事件,消息,tosid) ,就可以把消息单独发送给某个用户了。 flask_websocket |--static |--js |--jquery-3.7.0.min.js |--socket.io_4.3.1.js |--template…

leetcode543 二叉树的直径

题目 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 输入&#xff1a;root [1,2,3,4,5] 输出&#xff1…

jmeterbeanshell调用jsonpath获取对应值

1.jmeter 新建线程组、Java Request、BeanShell Assertion、View Results Tree 2、在BeanShell Assertion中贴入代码&#xff1a; import org.apache.jmeter.extractor.json.jsonpath.JSONManager; import java.util.List; JSONManager js new JSONManager(); String jsonStr…

手机上比较好用的笔记软件使用哪一款?

手机已经成为我们日常生活不可或缺的一部分&#xff0c;它们伴随着我们的方方面面。在这部小小的设备中&#xff0c;我们可以完成许多任务&#xff0c;其中之一就是记录笔记。手机上的笔记软件如今多种多样&#xff0c;但在选择时&#xff0c;敬业签可能是你不容错过的选择。 …

多平台兼容性:跑腿系统开发的移动端和Web端技术选项

随着移动设备和Web浏览器的广泛使用&#xff0c;跑腿系统的开发需要考虑多平台兼容性。本文将讨论一些在开发跑腿系统的移动端和Web端时可用的技术选项&#xff0c;并提供示例代码以帮助您入门。 移动端技术选项&#xff1a; 1. React Native React Native是一个流行的移动应…

YashanDB混合存储揭秘:行式存储如何为高效TP业务保驾护航(下)

上一篇文章https://mp.weixin.qq.com/s/mQLzi2PSZxqwwACSsq49ng为大家讲述了行式存储中事务并发控制的关键设计和优化。YashanDB采用了In-place Update 的块级 MVCC&#xff0c;能极大提高事务并发处理能力。本篇文章&#xff0c;我们将会详解插入性能优化和宽行存储的设计。 插…

查看吾托帮88.47的docker里的tomcat日志

步骤如下 &#xff08;1&#xff09;ssh &#xff08;2&#xff09;ssh root192.168.88.47 等待输入密码&#xff1a;fytest &#xff08;3&#xff09;pwd #注释&#xff1a;输出/root &#xff08;4&#xff09;docker exec -it wetoband_deploy /bin/bash #注释&#xff1…

【记录】Python 之于 C/C++ 区别

记录本人在 Python 上经常写错的一些地方&#xff08;C/C 写多了&#xff0c;再写 Python 有点切换不过来&#xff09; 逻辑判断符号用 and、or、!可以直接 10 < num < 30 比较大小分支语句&#xff1a;if、elif、else使用 、-&#xff0c;Python 中不支持 、- - 这两个…

elk日志某个时间节点突然搜索不到了

elk日志某个时间节点突然搜索不到了,检查filebeat正常 Kibana手动上传数据: 响应: Error: Validation Failed: 1: this action would add [2] total shards, but this cluster currently has [2000]/[2000] maximum shards open 原因:ElasticSearch总分片数量导致的异常,ES…

Qt重写QTreeWidget实现拖拽

介绍 此文章记录QTreeWidget的重写进度&#xff0c;暂时停滞使用&#xff0c;重写了QTreeWidget的拖拽功能&#xff0c;和绘制功能&#xff0c;自定义了数据结构&#xff0c;增加复制&#xff0c;粘贴&#xff0c;删除&#xff0c;准备实现动态刷新数据支持千万数据动态刷新&a…

JAVA面经整理(2)

一)解决哈希冲突的方法有哪些&#xff1f; 哈希冲突指的是在哈希表中&#xff0c;不同的键值映射到了相同的哈希桶&#xff0c;也就是数组索引&#xff0c;导致键值对的冲突 1)设立合适的哈希函数:通过哈希函数计算出来的地址要均匀的分布在整个空间中 2)负载因子调节: 2.1)开放…

【vue】vue+easyPlayer 实现宫格布局及视频播放

由于业务需要&#xff0c;ant-design-vue框架集成easyPlayer.js作为视频播放器。EasyPlayer.js H5播放器&#xff0c;是一款能够同时支持HTTP、HTTP-FLV、HLS&#xff08;m3u8&#xff09;、WS视频直播与视频点播等多种协议&#xff0c;支持H.264、H.265、AAC等多种音视频编码格…

王江涛十天搞定考研词汇

学习目标&#xff1a; 考研词汇 学习内容&#xff1a; 2023-9-17 第一天考研词汇 学习时间&#xff1a; 开始:2023-9-17 结束:进行中 学习产出&#xff1a; 2023-9-17intellect智力&#xff1b;知识分子intellectual智力的&#xff1b;聪明的intellectualize使...理智化&a…

堆的实现(C版)

普通的二叉树是不适合用数组来存储的&#xff0c;因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储&#xff0c;需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事&#xff0c;一个是…

软件设计模式系列之十二——外观模式

在软件设计中&#xff0c;经常会遇到需要与复杂子系统进行交互的情况。为了简化客户端与子系统之间的交互&#xff0c;提高系统的可维护性和可用性&#xff0c;外观模式应运而生。外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供一个统…