Mysql数据库 10.SQL语言 储存过程 上

news2024/9/27 21:25:02

存储过程==方法

存储过程介绍

SQL指令执行过程

1.编写SQL指令

2.通过网络传送SQL指令,编写SQL指令后通过数据库连接将指令传送到数据库

3.数据库接收SQL指令

4.当数据库接收到指令后,通过SQL引擎编译并执行SQL指令

5.返回到DBMS显示查询结果

存储过程

把一些特殊的sql指令封装成一个sql指令集,类似于函数/方法

给每一个指令集起一个名字,相当于函数/方法,避免重复执行相同的sql语句造成消耗

用指令集的名字节省资源,不需要传输sql指令

存储过程优缺点分析

优点
缺点

1.不具备多产品之间的切换

2.产生高性能的优化问题

3.在互联网项目中(选择使用,抉择使用),如果出现数据库的高并发问题(连接较多,访问量较大),使用存储过程会增加数据库连接时的执行时间

创建存储过程 

存储过程的创建语法

create procedure 存储过程名(自己定义)[IN 输入参数 类型 /OUT 输出参数 类型 args]

begin

        ——SQL指令

end;

示例

创建存储过程,进行加法运算

代码实现
create procedure proc_test1(IN a int,IN b int,out c int)
begin
	#set 定义变量	
	set c=a+b;#定义变量	
end;

调用存储过程

调用存储过程语法 关键字:call

call 存储过程名;

代码实现

set定义一个变量接收方法的返回值

#调用存储过程,call关键字 call 存储过程名;
set @m=0;#定义变量接收返回值
#调用存储过程,将3传递给a,将2传递给b,将@m传递给c
call proc_test1(3, 2,@m);
查看结果:显示变量值 (dual系统表,定义的变量的值在之中存储)
select @m from dual;
使用方法,运行结果

存储过程中变量的使用

存储过程中的变量分为两种:局部变量、用户变量

定义局部变量

局部变量:定义在存储过程中的变量,只能在存储过程中使用

语法 关键字:declare

declare 局部变量名 类型名 [default value];

局部变量要定义在存储过程中,而且必须定义在存储过程的开始

示例

局部变量的定义

代码实现
#创建储存过程
create procedure proc_test2(in a int,out r int)
begin
	#定义局部变量
	declare x int default 0;
	declare y int default 1;
	set x=a*a;
	set y=a/2;
	set r=x+y;
end

#用户变量(全局变量)用set关键字定义,必须以一个@开头定义变量名称
set @n=1;
#用户变量存储在MYSQL数据库的数据字典(dual)中
#调用储存过程
#6*6+6/2
call proc_test2(6,@n);

#查询结果 6*6+6/2
运行结果

注:declare定义的变量只存储于存储过程中,无法取出,所以没有存储

定义用户变量

用户变量:相当于全局变量,定义的用户变量可以通过select @变量名 from dual 进行查询

语法

set @变量名;

注意事项

因为用户变量相当于全局变量,可以在SQL指令以及多个存储过程中共享,所以在开发中尽量少使用用户变量,会导致程序不易理解,难以维护

给变量修改值

无论局部变量还是用户变量,都使用set关键字修改值

将SQL语句查询到的结果赋值给变量 select...into...语句

将查询到的结果赋值给储存过程中的out参数,需要使用select...into...语句

代码实现
#将查询到的结果赋值给储存过程中的out参数,需要使用select...into...语句
#查询studentes表中学生数量
#创建储存过程
create procedure pro_test3(out c int)
begin
	select count(stu_num) into c from students s ;
end;

#调用储存过程
call pro_test3(@n);
select @n from dual;
#@n为全局变量,可以全局使用
运行结果

存储过程中的参数

IN 输入参数  / OUT 输出参数 / INOUT 输入输出参数

代码实现
#输入输出参数演示
create procedure proc_test6(inout str varchar(20))      
begin
	select name  into str from students s where stu_num = str;
end;

#定义变量 
set @name1 = '20220109';
call proc_test6(@name);
select @name from dual;
#等价于输入和输出参数

运行结果

 

等价于

代码实现
#创建储存过程
create procedure proc_test4(in snum char(8),in sname varchar(20),in gender char(2),in age int,in cid int)
begin
	insert into students(stu_num,name ,stu_gender,stu_age,cid)
		values(snum,sname,gender,age,cid);
end;

#调用储存过程
call proc_test4('20220109','小李','女',20,1); 

#输出参数的演示
create procedure proc_test5(in snum char(8),out sname varchar(20))
begin
	select name into sname from students s where stu_num =snum;
end;
#等价于输入输出合一

set @name='';
call proc_test5('20220109',@name);
select @name from dual;

运行结果

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

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

相关文章

基于浣熊算法的无人机航迹规划-附代码

基于浣熊算法的无人机航迹规划 文章目录 基于浣熊算法的无人机航迹规划1.浣熊搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用浣熊算法来优化无人机航迹规划。 1.浣熊搜索算法 …

关于卷积神经网络的多通道

多通道输入 当输入的数据包含多个通道时,我们需要构造一个与输入通道数相同通道数的卷积核,从而能够和输入数据做卷积运算。 假设输入的形状为n∗n,通道数为ci​,卷积核的形状为f∗f,此时,每一个输入通道都…

剑指offer全集系列Java版本(2)

目录 反转链表 替换空格 二叉树 链表的中间结点 附录 StringBuffer类中常用的方法 反转链表 反转链表_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId265&tqId39226&rp1&ru/exam/oj/ta&qru…

时序预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于LSSVM-Adaboos…

Spring Cloud学习(一)【SpringCloud介绍/服务远程调用】

文章目录 单体架构分布式架构微服务微服务技术对比Spring Cloud 介绍服务拆分及远程调用 单体架构 单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包部署。 优点: 架构简单部署成本低 缺点: 耦合度高 分布式架构 …

小程序day04

目标 自定义组件 创建组件 引用组件 局部引用 全局引用 组件的函数定义到metods节点中,梦回vue2. 样式 数据,方法,属性 下划线开头的称为自定义方法,非下划线开头的都是事件处理函数。 神特么,this.datathis.pro…

【计算系统】分布式训练:DDP单机多卡并行实战

分布式训练:DDP单机多卡并行 1. 分布式训练总览1.1 并行方式1.2 PyTorch中数据并行方法1.3 训练原理1. DataParallel(DP)训练原理2. DistributedDataParallel(DDP)多卡训练的原理 2. PyTorch分布式代码实战2.1 不使用DDP和混合精度加速的代码2.2 使用DDP对代码改造后…

2021年06月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 对自然数1至n求和,如果将递推式f(n)f(n-1)n(n>1)转化成递归函数,则递归出口是? …

自动出价下机制设计系列 (二) : 面向私有约束的激励兼容机制设计

本文作者:真柏、妙临 欢迎关注:阿里妈妈技术公众号>> 导读:这篇是阿里妈妈在自动出价下机制设计系列的第二篇工作(🔗 第一篇:面向异质目标函数广告主的拍卖机制设计)。在自动出价中&…

猫罐头哪家好?5款良心性价比的猫罐头推荐!

在我们日常的宠物喂养中,猫罐头已经成为了许多猫奴们的必备利器。但面对五花八门的猫罐头品牌,如何为你的猫咪挑选一个既合适又满意的猫罐头呢?作为一家宠物店的老江湖,我已经在宠物行业摸爬滚打了七年,店里的猫儿队伍…

数据库的基础增删查改操作(二)

TOC 一.条件查询的练习题 – 查询英语不及格的同学及英语成绩 ( < 60 ) – 查询语文成绩好于英语成绩的同学 查询语文成绩高于60,英语成绩低于60 查询li开头的学生姓名 1.and与or 查询语文成绩大于80分&#xff0c;且英语成绩大于80分的同学 SELECT * FROM exam_result W…

Anaconda如何创建一个环境

activate env_name 激活环境&#xff0c;env_name&#xff1a;环境名 deactivate env_name 激活环境 conda list …

java八股文(mysql篇)

什么是关系型数据库&#xff1f; 其是建立在关系模型基础上的一种数据库&#xff0c;这种关系分为&#xff1a;一对一&#xff0c;一对多&#xff0c;多对多。 我们的数据存放在表中&#xff0c;在表中会有一至多个字段&#xff0c;一行就是一条数据。 mysql有哪些字段呢&…

pg安装pgagent插件以创建job

一 下载 官方下载地址Download 二 安装 2.1 安装cmake 执行cmake -version查看版本&#xff0c;如果能看到版本信息&#xff0c;就不用重复安装了。 cd /usr/local/ tar xvf cmake-3.16.5-Linux-x86_64.tar.gzcd cmake-3.16.5-Linux-x86_64/binvi /etc/profile 在最后新增…

哇,膜拜,师父竟然懂HARAKIRI的意思(附Linux常用命令)

哇&#xff0c;膜拜&#xff0c;师父竟然懂HARAKIRI的意思 我在看服务器日志的时候&#xff0c;发现有好几行开头都写着HARAKIRI 还以为是什么机制&#xff0c;就去问了问AI&#xff0c;结果它也不懂&#xff0c;百度也没查到 就去问师父&#xff0c;他一下就说出&#xff0c…

Kubernetes - pod详解

Pod基础概念&#xff1a; Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod运行的S…

动手学Matplotlib画图,Matplotlib 是一个非常强大的 Python 画图工具。【Matplotlib学习笔记】

一、第一章 1.基本用法 import matplotlib.pyplot as plt import numpy as npx np.linspace(-1,1,50) y 2*x 1 plt.plot(x,y) plt.show()2.figure图像 import matplotlib.pyplot as plt import numpy as npx np.linspace(-1,1,50) y1 2*x 1 y2 x**2 plt.figure() plt…

6.ELK之Elasticsearch嵌套(Nested)类型

0、前言 在Elasticsearch实际应用中经常会遇到嵌套文档的情况&#xff0c;而且会有“对象数组彼此独立地进行索引和查询的诉求”。在ES中这种嵌套文档称为父子文档&#xff0c;父子文档“彼此独立地进行查询”至少有以下两种方式&#xff1a; 1&#xff09;父子文档。在ES的5.…

基于人工蜂鸟算法的无人机航迹规划-附代码

基于人工蜂鸟算法的无人机航迹规划 文章目录 基于人工蜂鸟算法的无人机航迹规划1.人工蜂鸟搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用人工蜂鸟算法来优化无人机航迹规划。 …

【kubernetes】k8s组件

文章目录 1、概述2、控制平面组件&#xff08;Control Plane Components&#xff09;2.1 kube-apiserver2.2 etcd2.3 kube-scheduler2.4 kube-controller-manager2.5 cloud-controller-manager 3、Node组件3.1 kubelet3.2 kube-proxy3.3 容器运行时&#xff08;Container Runti…