做网站 每月赚 钱/公司网站设计图

做网站 每月赚 钱,公司网站设计图,印刷行业网站建设,WordPress 营利介绍 基本语法 创建 调用 查看 删除 变量 系统变量 查看 设置 用户定义变量 赋值 使用 局部变量 声明 赋值 流程控制 参数 条件结构 IF case 循环结构 while repeat loop 游标 条件处理程序 介绍 举个简单的例子,我们先select某数据&…

介绍

基本语法

创建

调用

查看

删除

变量

系统变量

查看

设置

用户定义变量

赋值

使用

局部变量

声明

赋值

流程控制

参数

条件结构

IF

case

循环结构

while

repeat

loop

游标

条件处理程序


介绍

举个简单的例子,我们先select某数据,然后update,再update。这一系列操作指令是在MySQL中

下达的,然后指令传输到应用层,那么导致的问题就是,多次的指令传输会涉及到网络的请求。

所以存储过程就是,由一系列SQL语句经过编译后的指令集合,通过调用这个集合可以简化开发者的流程。最重要的是,能够减少数据在数据库和应用服务器之间的传输,提高数据处理的效率。

储存过程的思想很简单,就是在SQL语言层面的代码的封装和重用。

存储过程的特点:

  1. 封装、复用
  2. 可以接受参数、也可以返回数据
  3. 减少网络层的交互,提升效率

基本语法

创建

create procedure p1() --存储过程名称,也可以添加参数
begin--具体的SQL语句
end;

调用

call p1();

查看

  • 通过MySQL系统中的信息查看
select *from information_schema.ROUTINES where ROUTINE_SCHEMA = 'text';
--数据库名
  • 查看创建语句
show create procedure p1;

删除

drop procedure [if exist] p1;

注意!!!如果使用命令行执行存储过程的创建语句,会报错:

这是因为,在命令行中以分号为一句命令的结束,所以会导致报错。

所以在命令行中执行创建语句时,应该使用delimiter关键字指定命令结束符:

delimiter $$  --指定两个美元符号为结束符号create procedure p1() --存储过程名称,也可以添加参数
begin-----;
end;$$

变量

  • 系统变量

系统变量是MySQL服务器指定的,不是用户定义的,属于服务器层面,Global(全局变量)、Session(会话变量,只代表当前会话)

查看

show variables;
--show global variables;
--show session variables;show variables like 'ac%';
--模糊匹配select @@activate_all_roles_on_login;
--查找指定的系统变量名

设置

set session 系统变量名 = 值;
--set global 系统变量名 = 值;

注意:

  • 当没有指定global和session时,系统默认是session会话变量
  • 当mysql重启时没所有设置的全局参数将会失效,要想不失效,可以在配置文件中配置

  • 用户定义变量

赋值

set @myname = 'John';
set @myage := 10; 
--相当于定义了两个变量,并且赋值set @mynumber = 12345 , @myaddress = '北京市';
--可以同时定义两个用户变量select set @mycolor := '中国红';
--可以使用select进行赋值select count(*) into @mynum from users;
--可以使用其他表的字段来进行赋值

使用

select @mycolor,@myage;
  • 局部变量

声明

declare user_num int;
--user_num是局部变量名

赋值

与用户自定义变量赋值相似

流程控制

参数

create procedure p2(in score int,out ret varchar(10))
beginif score >=15 thenset ret = '优秀';elseset ret = '及格';end if;
end;call p2(18,@ret);
select @ret;

运行结果:

条件结构

  • IF

create procedure p2()
begindeclare score int default 20;declare ret varchar(10);if score >=15 thenset ret = '优秀';elseset ret = '及格';end if;select ret;
end;call p2();

还是比较好理解的,类似于编程语言中的IF语句。

  • case

create procedure p3(in month int)
begindeclare ret varchar(10);casewhen month>=1 and month<=3 thenset ret := '第一季度';when month>=4 and month<=6 thenset ret := '第二季度';when month>=7 and month<=9 thenset ret := '第三季度';when month>=10 and month<=12 thenset ret := '第四季度';else set ret := '非法参数';end case;select concat('您输入的月份为:',month,' 所属季度为:',ret);
end;call p3(12);

循环结构

  • while

WHILE   条件   DO

        SQL逻辑语句

END WHILE;

演示

输入一个参数n,返回从1到n的累加

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

运行结果

  • repeat

满足条件退出循环

repeat

        SQL逻辑语句

UNTIL   条件

end   repeat;

  • loop

 loop一般配合下面两个语句使用:

  1. LEAVE(直接退出循环)
  2. ITERATE(跳过本次循环的剩下语句,然后进入下一次循环)
create procedure p4(in n int)
begindeclare total int default 0;sum loop:if n<=0 thenleave;end if;set total = total + n;set n = n - 1;end loop sum;select total;
end;call p4(10);

游标

游标是用来存储查询数据集的数据类型,在存储过程或函数过程中对结果集进行循环的处理。

  • 声明游标

declare  游标名  cursor  查询结果集;

--输入年龄上限,将所有小于该年龄的数据的部分字段,作为一个游标create procedure p5(in n int)
begindeclare uname varchar(10);declare ugender varchar(10);declare u_cursor cursor for select user_name,user_gender from users where user_age<=n;drop table if exists u_name_gen;create table if not exists u_name_gen(id int primary key auto_increment,name varchar(10),gender varchar(10));open u_cursor;while true dofetch u_cursor into uname,ugender;insert into u_name_gen values (null,uname,ugender);end while;close u_cursor;end;call p5(32);

这里要注意的是,表确实创建成功了,但是MySQL依然会报错:

这里的原因在于存储过程中的循环没有有效的停止。 

条件处理程序

条件处理程序用于在存储过程中抛出异常时,解决问题的相应步骤。

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

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

相关文章

在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 MineCraft 服务器,并实现远程联机,详细教程

Linux 部署 MineCraft 服务器 详细教程&#xff08;丐版&#xff0c;无需云服务器&#xff09; 一、虚拟机 Ubuntu 部署二、下载 Minecraft 服务端三、安装 JRE 21四、安装 MCS manager 面板五、搭建服务器六、本地测试连接七、下载樱花&#xff0c;实现内网穿透&#xff0c;邀…

批量取消 PDF 文档中的所有超链接

在 PDF 文档中我们可以插入各种各样的文本也可以给文本设置字体&#xff0c;颜色等多种样式&#xff0c;同时还可以给文字或者图片添加上超链接&#xff0c;当我们点击超链接之后&#xff0c;就会跳转到对应的网页。有时候这会对我们的阅读或者使用形成一定的干扰&#xff0c;今…

Linux学习笔记(应用篇三)

基于I.MX6ULL-MINI开发板 LED学习GPIO应用编程输入设备 开发板中所有的设备&#xff08;对象&#xff09;都会在/sys/devices 体现出来&#xff0c;是 sysfs 文件系统中最重要的目录结构 /sys下的子目录说明/sys/devices这是系统中所有设备存放的目录&#xff0c;也就是系统中…

递归、搜索与回溯第四讲:floodfill算法

递归、搜索与回溯第四讲&#xff1a;floodfill算法 1.Floodfill算法介绍2.图像渲染3.岛屿数量4.岛屿的最大面积5.被围绕的区域6.太平洋大西洋水流问题7.扫雷游戏8.衣橱整理 1.Floodfill算法介绍 2.图像渲染 3.岛屿数量 4.岛屿的最大面积 5.被围绕的区域 6.太平洋大西洋水流问题…

【深度学习与实战】2.3、线性回归模型与梯度下降法先导案例--最小二乘法(向量形式求解)

为了求解损失函数 对 的导数&#xff0c;并利用最小二乘法向量形式求解 的值‌ 这是‌线性回归‌的平方误差损失函数&#xff0c;目标是最小化预测值 与真实值 之间的差距。 ‌损失函数‌&#xff1a; 考虑多个样本的情况&#xff0c;损失函数为所有样本的平方误差之和&a…

气象可视化卫星云图的方式:方法与架构详解

气象卫星云图是气象预报和气候研究的重要数据来源。通过可视化技术,我们可以将卫星云图数据转化为直观的图像或动画,帮助用户更好地理解气象变化。本文将详细介绍卫星云图可视化的方法、架构和代码实现。 一、卫星云图可视化方法 1. 数据获取与预处理 卫星云图数据通常来源…

实现极限网关(INFINI Gateway)配置动态加载

还在停机更新 Gateway 配置&#xff0c;OUT 了。 今天和大家分享一个 Gateway 的功能&#xff1a;动态加载配置&#xff08;也称热更新或热加载&#xff09;。 这个功能可以在 Gateway 不停机的情况下更新配置并使之生效。 配置样例如下&#xff1a; path.data: data path.…

Day15 -实例 端口扫描工具 WAF识别工具的使用

一、端口扫描工具 1、zenmap 我这里user是汉字名&#xff0c;没有解析成功。等后续换一个英文账户试一试。 魔改kali的nmap nmap -p8000-9000 8.140.159.19 2、masscan cmd启动&#xff0c;拖入exe文件。然后先写ip&#xff0c;会报错给提示 寻路犬系统 我们去找一下他的…

如何解决高并发场景下的性能瓶颈?实践分享

解决高并发性能瓶颈的核心方法包括优化系统架构、合理使用缓存技术、数据库优化及扩展策略、负载均衡设计。 其中&#xff0c;优化系统架构是根本解决性能问题的关键所在。良好的系统架构能够有效支撑业务高效稳定运行&#xff0c;避免性能瓶颈带来的损失。企业可通过微服务架构…

性能测试、负载测试、压力测试的全面解析

在软件测试领域&#xff0c;性能测试、负载测试和压力测试是评估系统稳定性和可靠性的关键手段。​它们各自关注不同的测试目标和应用场景&#xff0c;理解这些差异对于制定有效的测试策略至关重要。 本文对性能测试、负载测试和压力测试进行深入分析&#xff0c;探讨其定义、…

学习本地部署DeepSeek的过程(基于LM Studio)

除了使用Ollama部署DeepSeek&#xff0c;还可以使用LM Studio部署DeepSeek&#xff0c;后者是一款允许用户在本地计算机上运行大型语言模型&#xff08;LLMs&#xff09;的桌面应用程序&#xff0c;旨在简化本地模型的使用&#xff0c;无需云端连接或复杂配置即可体验 AI 功能。…

等差数列公式推导

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

【MySQL】用户账户、角色、口令、PAM

目录 查看用户账户设置 连接 1.本地连接 2.远程连接 账户 角色 操作用户账户和角色 配置口令和账户有效期限 手工使口令过期 配置口令有效期限 PAM身份验证插件 客户端连接&#xff1a;使用 PAM 账户登录 在连接到MySQL服务器并执行查询时&#xff0c;会验证你的身…

5种生成模型(VAE、GAN、AR、Flow 和 Diffusion)的对比梳理 + 易懂讲解 + 代码实现

目录 1 变分自编码器&#xff08;VAE&#xff09;​ 1.1 概念 1.2 训练损失 1.3 VAE 的实现 2 生成对抗网络&#xff08;GAN&#xff09;​ 2.1 概念 2.2 训练损失 a. 判别器的损失函数 b. 生成器的损失函数 c. 对抗训练的动态过程 2.3 GAN 的实现 3 自回归模型&am…

印刷电路板 (PCB) 的影响何时重要?在模拟环境中导航

我和我的同事们经常被问到关于 PCB 效应的相同问题&#xff0c;例如&#xff1a; 仿真何时需要 PCB 效果&#xff1f; 为什么时域仿真需要 PCB 效应&#xff1f; 当 PCB 效应必须包含在仿真中时&#xff0c;频率是否重要&#xff1f; 设计人员应该在多大程度上关注 VRM 模型中包…

2024跨境电商挑战:AI反检测技术在避免封号中的作用

2024跨境电商挑战&#xff1a;AI反检测技术在避免封号中的作用 跨境电商的浪潮席卷全球&#xff0c;为商家打开了通往世界各地的大门。然而&#xff0c;随着平台监管的加强&#xff0c;合规性问题成为商家不得不面对的挑战。在电商平台的严格监控下&#xff0c;任何违规行为都…

网络运维学习笔记(DeepSeek优化版) 024 HCIP-Datacom OSPF域内路由计算

文章目录 OSPF域内路由计算&#xff1a;单区域的路由计算一、OSPF单区域路由计算原理二、1类LSA详解2.1 1类LSA的作用与结构2.2 1类LSA的四种链路类型 三、OSPF路由表生成验证3.1 查看LSDB3.2 查看OSPF路由表3.3 查看全局路由表 四、2类LSA详解4.1 2类LSA的作用与生成条件4.2 2…

多智能体融合(Multi-Agent Fusion)

多智能体融合&#xff08;Multi-Agent Fusion&#xff09;是指在多智能体系统&#xff08;MAS, Multi-Agent System&#xff09;中&#xff0c;多个智能体&#xff08;Agent&#xff09;通过协作、竞争或共享信息&#xff0c;实现全局最优的智能决策和任务执行。该方法广泛应用…

[学习笔记]NC工具安装及使用

工具简介 Netcat&#xff08;简称 nc&#xff09;是一款强大的命令行网络工具&#xff0c;被称作瑞士军刀&#xff0c;用来在两台机器之间建立 TCP/UDP 连接&#xff0c;并通过标准的输入输出进行数据的读写&#xff0c;大家也可以使用Nmap&#xff08;增强版nc工具&#xff0…

SvelteKit 最新中文文档教程(11)—— 部署 Netlify 和 Vercel

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。 从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte …