【从删库到跑路】MySQL数据库 | 存储过程 | 存储函数(使用代码辅助理解)

🎊专栏【MySQL】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【The Right Path】
🥰欢迎并且感谢大家指出小吉的问题

文章目录

  • 🎄存储过程介绍
  • 🎄存储过程特点
  • 🌺存储过程
    • ⭐创建
    • ⭐调用
    • ⭐查看
    • ⭐删除
  • 🍔全局变量
    • ⭐查看系统变量
    • ⭐设置系统变量
  • 🍔用户定义变量
    • ⭐赋值
    • ⭐使用
  • 🍔局部变量
    • ⭐声明
    • ⭐赋值
  • 🎍if判断
  • 🎍参数
  • 🎍case
  • 🎍while
  • 🎍repeat循环
  • 🎍loop循环
  • 🎍游标(光标)
  • 🎍handler
  • 🎆存储函数

在这里插入图片描述

🎄存储过程介绍

MySQL 存储过程(Stored Procedure)是一种预编译的代码块,它可以接受参数、执行特定的操作并返回结果。存储过程是一种将多条 SQL 语句组合在一起形成一个可重用的业务逻辑单元,从而简化应用程序的开发和维护

🎄存储过程特点

可以减少网络流量:数据库服务器上的存储过程可以减少客户端应用程序和数据库之间的网络流量。这是因为存储过程只需要发送参数和执行语句,而不需要每次都发送完整的 SQL 语句。

可以提高数据库性能:存储过程可以避免反复地编译解释 SQL 语句,从而提高数据库的执行效率。

可以实现可重用的代码:存储过程可以将公共的业务逻辑抽象出来,形成一个可重用的代码库,从而简化应用程序的开发和维护。

可以保护数据库安全:存储过程可以通过使用参数验证和权限控制等方式来保护数据库的安全。

🌺存储过程

⭐创建

create procedure 存储过程名称[(参数列表)]
begin

-- sql语句

end;

⭐调用

来执行 创建 过程中的sql语句

call 名称({参数});

create procedure p1()
beginselect count(*) from tb_abc;
end;call p1();

在这里插入图片描述

⭐查看

select * from information_schema.ROUTINES where ROUTINE_SCHEMA=‘数据库名’; --指定数据库的存储过程和状态信息

show create procedure p1; --查询某个存储过程的定义

在这里插入图片描述

查看详细内容
在这里插入图片描述

select * from information_schema.ROUTINES where ROUTINE_SCHEMA='abc';show create procedure p1;

⭐删除

drop procedure [if exists] 存储过程名称;

drop procedure if exists p1;

🍔全局变量

请添加图片描述

⭐查看系统变量

show session variables ;

在这里插入图片描述
如果要查询所有以 auto 开头的系统变量

show session variables like 'auto%';

在这里插入图片描述

上面查看的是session级别的,是当前会话级别的
如果我们要查看全局级别
把session改为global即可

show global variables like 'auto%';

在这里插入图片描述

上面我们使用了like,是模糊匹配
如果我们已经目前找到了系统变量的值,应该怎么办呢
方法如下

select @@autocommit;

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

⭐设置系统变量

0代表关闭自动提交开关,1代表打开自动提交开关

set session autocommit =0;

在这里插入图片描述
我们再次执行,发现session级别的自动提交开关已经变为0了

在这里插入图片描述

🍔用户定义变量

在这里插入图片描述

⭐赋值

set @myname = 'itcast';   -- 没有:
set @myage :=10;          -- 有 :  
set @mygender :='男',@myhobby :='java';

⭐使用

select @myname,@myage,@mygender,@myhobby;

在这里插入图片描述

🍔局部变量

请添加图片描述

⭐声明

declare

⭐赋值

create procedure p2()
begindeclare tb_count int default 0;    -- 局部变量要使用declareselect count(*) into tb_count from tb_abc;select tb_count;
end;call p2();

在这里插入图片描述

🎍if判断

请添加图片描述

根据定义的分数score变量,判定当前分数对应的分数等级
score>=85 优秀
score>=60 && score M< 85 及格
score<60 不及格

create procedure p4()
begindeclare score int default 58;declare result varchar(10);if score>=85 thenset result:='优秀';elseif score>=60 thenset result:='及格';elseset result:='不及格';end if;select result; -- 展示结果
end;call p4;

在这里插入图片描述

🎍参数

请添加图片描述

根据传入(in) 参数score,判定当前分数对应的分数等级,并返回(out)
score>=85 优秀
score>=60 && score M< 85 及格
score<60 不及格

create procedure p5(in score int,out result varchar(10))
begin
#     declare score int default 58;
#     declare result varchar(10);if score>=85 thenset result:='优秀';elseif score>=60 thenset result:='及格';elseset result:='不及格';end if;#     select result;
end;call p5(68,@result);
select @result;

在这里插入图片描述

将传入的200分制的分数,换算威百分制,然后返回分数 ---->inout

create procedure p6(inout score double)
beginset score:=score*0.5;
end;set @score=198;
call p6(@score);
select @score;

这段代码中的 select @score; 表示查询的是存储过程中 call p6(@score); 执行后 @score 的值
在这里插入图片描述

🎍case

请添加图片描述

根据传入的月份,判断季度
1-3月 第一季度
4-6月 第二季度
7-9月 第三季度
10-12月 第四季度

create procedure p7(in month int)
begindeclare result varchar(10);casewhen month>=1 and month <=3 thenset result :='第一季度';when month>=4 and month <=6 thenset result :='第二季度';when month>=7 and month <=9 thenset result :='第三季度';when month>=10 and month <=12 thenset result :='第四季度';elseset result:='非法参数';end case ;select concat('月份',month,'季度',result); -- 借住concat函数,进行字符串拼接end;call p7(4);

在这里插入图片描述

🎍while

请添加图片描述

计算从1累加到n的值,n为传入的参数值

create procedure p8(in n int)
begindeclare total int default 0;while n>0 doset total:=total+n;set n:=n-1;end while ;select total;
end;call p8(10);

在这里插入图片描述

🎍repeat循环

请添加图片描述

计算从1累加到n的值,n为传入的参数值

create procedure p9(in n int)
begindeclare total int default 0;repeatset total:=total+n;set n:=n-1;until n<=0end repeat;select total;
end;
call p9(10);

在这里插入图片描述

while 满足条件 进行 循环
repeat 满足条件 退出 循环

🎍loop循环

请添加图片描述

计算从1累加到n的值,n为传入的参数值

create procedure p10(in n int)
begindeclare total int default 0;sum:loopif n<=0 thenleave sum;end if;set total:=total+n;set n:=n-1;end loop sum;select total;
end;call p10(100);

在这里插入图片描述

🎍游标(光标)

请添加图片描述

查询id小于uid的员工,并且把它们的信息存入到新表中

在这里插入图片描述

我们运行后发现运行失败,报错了
为了解决这个问题,我们要使用下面的方法

🎍handler

请添加图片描述

在代码中加入这一段代码

declare exit handler for not found close u_course;

在这里插入图片描述

在这里插入图片描述

🎆存储函数

请添加图片描述

计算从1累加到n的值,n为传入的参数值

create function fun1(n int)
returns int deterministic -- 指定特性deterministic
begindeclare total int default 0;while n>0 doset total:=total+n;set n:=n-1;end while;return total;
end;select fun1(100);

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

找搭子平台小程序开发制作方案

找搭子小程序是一个基于地理位置的社交平台&#xff0c;旨在帮助用户找到附近的人&#xff0c;一起进行各种活动。的目标是打造一个安全、便捷、有趣的社交平台&#xff0c;让用户在享受活动的同时&#xff0c;也能结识新朋友。 找搭子平台小程序的目标用户主要是年轻人&#x…

「北大社送书」学习Flutter编程 — 《从零基础到精通Flutter开发》

目录 1.书籍推荐理由 2.本书特色 3.内容简介 4.书籍概览 1.书籍推荐理由 一套代码&#xff0c;构建多平台精美的应用&#xff1a;本书从真实的开发场景出发&#xff0c;完整地讲解了Flutter框架&#xff0c;帮助你快速掌握Flutter的基础知识和开发技巧&#xff0c;助你在移…

stm32外部时钟为12MHZ,修改代码适配

代码默认是8MHZ的&#xff0c;修改2个地方&#xff1a; 第一个地方是这个文件的这里&#xff1a; 第二个地方是找到这个函数&#xff1a; 修改第二个地方的这里&#xff1a;

大数据技术学习笔记(二)—— Hadoop 运行环境的搭建

目录 1 准备模版虚拟机hadoop1001.1 修改主机名1.2 修改hosts文件1.3 修改IP地址1.3.1 查看网络IP和网关1.3.2 修改IP地址 1.4 关闭防火墙1.5 创建普通用户1.6 创建所需目录1.7 卸载虚拟机自带的open JDK1.8 重启虚拟机 2 克隆虚拟机3 在hadoop101上安装JDK3.1 传输安装包并解压…

竞赛选题 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满…

安装EasyX--图形库--从代码到图形

一.软件安装 EasyX 是一款针对 Visual C 的免费绘图库软件&#xff0c;免费哦&#xff01;支持 VC6.0 ~ VC2022 EasyX Graphics Library for C 这是它的网址 进入后点机下载即可 双击安装包 在这一步,注意选择适合你电脑上安装的编译器版本,我的电脑安装的是vs2022,那么我选…

Redis面试题

思维导图知识点整理&#xff1a; Redis类型有哪些&#xff1f; 主要的五大类型及数据结构&#xff1a; String&#xff1a;简单动态字符串&#xff08;SDS&#xff09;List&#xff1a;双向链表 - quicklist Hash、Set、Zset 文章来源&#xff1a;redis面试题-2023 Redi…

个人博客测试报告

目录 一、项目背景 二、项目功能 三、测试计划 功能测试 1、测试用例 ​编辑 2、 实际执行测试的部分操作步骤/截图 3、发现的bug 自动化测试 博客访问连接 一、项目背景 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xf…

【尘缘赠书活动:01期】Python数据挖掘——入门进阶与实用案例分析

引言 本案例将根据已收集到的电力数据&#xff0c;深度挖掘各电力设备的电流、电压和功率等情况&#xff0c;分析各电力设备的实际用电量&#xff0c;进而为电力公司制定电能能源策略提供一定的参考依据。更多详细内容请参考**《Python数据挖掘&#xff1a;入门进阶与实用案例…

docker搭建waline评论系统

我这里是给博客网站嵌入评论系统的 1.登录LeanCloud 国际版&#xff0c;没有账号可以注册个 链接&#xff1a;点击跳转 2.新建应用&#xff0c;选择开发版&#xff08;免费&#xff09;&#xff0c;商用版每个月最低消费5美刀。 3.在设置-应用凭证里面将AppID、AppKey、Maste…

Oracle Enterprise Manager 认证列表

认证列表的查找方法参见Accessing the Enterprise Manager Certification Matrix。 认证分为对于OMS的&#xff0c;和对于Agent的。 OMS和Agent的描述见这里。 Oracle Management Agent The Management Agent is an integral software component that enables you to conver…

深度学习——图像分类(CIFAR-10)

深度学习——图像分类&#xff08;CIFAR-10&#xff09; 文章目录 前言一、实现图像分类1.1. 获取并组织数据集1.2. 划分训练集、验证集1.3. 图像增广1.4. 引入数据集1.5. 定义模型1.6. 定义训练函数1.7. 训练模型并保存模型参数 二、生成一个桌面小程序2.1. 使用QT设计师设计界…

进一步了解视频美颜SDK:美颜SDK的技术原理

美颜技术在当今的数字世界中变得越来越流行&#xff0c;尤其是在视频直播、社交媒体和视频通话应用中。用户寻求通过美颜效果增强自己的外观&#xff0c;这种需求催生了众多美颜SDK&#xff08;软件开发工具包&#xff09;的出现。这些SDK使开发者能够轻松地将美颜功能集成到他…

关于使用 vxe-table 时设置了 show-overflow tooltip 不展示的问题(Dialog 组件和 table 同时使用)

众所周知&#xff0c;vxe-table 是可以支撑万级数据渲染的表格组件&#xff0c;本质上还是用了虚拟滚动的实现。之前一直知道vxe-table, 但是基本没有机会用的上这个组件&#xff0c;最近在开发埋点数据的统计&#xff0c;后端一次性返回了上千条数据&#xff0c;elementui 的 …

国产服务器安装onlyoffice详细教程

1.通过docker安装onlyoffice 找一台能访问互联网的服务器下载onlyoffice镜像 sudo docker pull onlyoffice/documentserver查看镜像 docker images 启动onlyoffice docker run -itd \ --name onlyoffice1 \ --restart always \ -p 8099:80 \ -v /data/docker/onlyoffice/lo…

常见排序算法之冒泡排序

冒泡排序&#xff0c;英文名Bubble Sort&#xff0c;是一种相对基础的 交换排序方法。这种排序算法的名字来源于它操作的过程&#xff0c;可以类比为数列中的每一个元素都可以像小气泡一样&#xff0c;根据自身的大小一点一点向数组的一侧移动。具体到冒泡排序的工作原理&#…

06数据结构——图

6.2图的存储及基本操作 6.2.1邻接矩阵法 图的邻接矩阵存储结构定义如下&#xff1a; #define MaxVertexNUm 100 //顶点数目的最大值 typedef char VertexType; //顶点的数据类型 typedef int EdgeType; //带权图中边上权值的数据类型 ty…

yolov8 c++进行部署

注意使用opencv4.8 手动安装指定版本opencv 官网下载指定版本的source代码&#xff0c;并解压到本地。 解压后执行make命令 mkdir build cd build cmake .. make -j8 sudo make install/etc/ld.so.conf.d/路径下创建任意一个.conf文件&#xff0c;把lib文件的路径写在里面,一…

ideaSSM在线商务管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 SSM 在线商务管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码 和数据库&#xff0c;系统主…

C/C++程序设计和预处理

个人主页&#xff1a;仍有未知等待探索_C语言疑难,数据结构,小项目-CSDN博客 专题分栏&#xff1a;C语言疑难_仍有未知等待探索的博客-CSDN博客 目录 一、引言 二、程序的翻译环境和执行环境 1、什么是程序 2、程序的翻译环境 3、程序的执行环境 三、预处理 1、预定义符…