MySQL流程控制

流程控制

  1. 顺序结构: 程序从上往下依次执行
  2. 分支结构: 程序按条件进行选择执行,从两条或多条路径中选择一条执行。
  3. 循环结构: 程序满足一定条件下,重复执行一组语句

针对于MySQL的流程控制语句主要有3类。注意:只能用于存储程序

条件判断语句 :if 语句 和 case 语句
循环语句:LOOP、while、REPEAT

分支结构 if elseif end if

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
if 语句语法结构

if 表达式1 then 
操作1
[elseif  表达式2 then 操作2].。。。
[else 操作n]
end if  ;   --这个  ;  别忘记了

案例

delimiter $
create procedure pro_x(in id)
begindeclare dep_id , emp_id int ;declare work_age int default 1;select  depid , workage , empid   into dep_id  , workage , empid  from  empwhere emp_id=id ;# if   分支if  work_age >=20 and dep_id =1002 then# 操作语句;elseif if  dep_id =1004 then# 操作语句;else   #  else  后面没有  then# 操作语句;end if  ;   #   end if ;  别忘记
end $delimiter ;###   调用 存储过程
set @id=10;
call  pro_x(@id);

在这里插入图片描述

分支结构 case when then

跟在 select 中 case when then 一样的
**syntax **

##  情况1   :  类似  switch  case 
case 表达式
when 值1 then  操作
when 值2 then  操作
。。。。
else   结构n 或语句n(如果是语句,需要加  分号 )end [case] (如果是放在begin end 中需要加上 case,如果放在select 后面不需要)### 情况2   类似   if
case 
when   表达式1   then   操作
when   表达式 2  then   操作
。。。。
else 结果 n 或语句你如果是语句,需要加  分号 )end [case] (如果是放在begin end 中需要加上 case,如果放在select 后面不需要)

在这里插入图片描述

循环结构 之 LOOP

[ loop_label : ] LOOP循环执行的语句
end loop [ loop_label]
# 其中,Loop_label 表示Lopp语句的标注名称,该参数可以省略

案例

delimiter $
create procedure pro_loop(out cnt int )
begindeclare id int default 0;add_loop : LOOPset id =id +1;if cnt>=10 thenLEAVE add_loop;end if;END LOOP add_loop;set cnt=id;
end $delimiter ;
####  调用 
call pro_loop( @num)

在这里插入图片描述

while

while 语句创建一个带条件判断的循环过程。 while 在执行语句执行时,先对指定的表达式进行判断,如果为真,就执行循环内的语句,否则退出循环, 相当于 其余语言的 while 循环结构

[while_lable:] while 循环条件  DO循环体
END  while  [while_lable];     ####   ; 别忘记

while_lable 为While语句的标注名称;如果循环条件结果为真,while语句内的语句或语句群被重复,直到循环条件为假,退出循环。

在这里插入图片描述

delimiter $
create procedure   pro_while()
begindeclare num int default 0;while  num>=100 doset num=num+1;end while ;    ###   分号别忘记select num;
end $delimiter  ;#   调用
call   pro_while();

repeat

repeat 语句创建一个带条件判断的循环过程。与while循环结构不同,repeat循环首先会执行依次循环体,然后再until 中进行表达式的判断。如果满足条件就退出,即 end repeat; 如果条件不满足,则会就继续执行循环,直到满足退出条件为止。

[ repeat_labler : ]  repeat循环体语句
until  结束循环的条件表达式        ##   此次没有    分号  
end repeat [ rpeat_label ] ;

repeat_label 为repeat 语句的标注名称, 该参数可以省略; repeat语句内的语句或语句群被重复,直到 until 后面的表达式为真。

在这里插入图片描述

delimiter $
create procedure   pro_repeat()
begindeclare num,cnt  int default 0;     #   declare  同时定义多个变量,但必须同一类型。repeatset num=num+1,cnt= cnt+1;  #   set  多个变量赋值,  中间用  逗号 隔开until  num>500    #   没有分号   end  repeat ;select num,cnt;
end $delimiter  ;#   调用
call   pro_repeat();

三种循环结构 的区别 repeat 、 while 、 loop

repeat 相当于 do。。。。while
while 相当于 while

这三种循环都可以省略 标注名称,但如果循环中加了 循环控制语句 (leave 、Iterate )则必须添加 标注名称

LOOP:一般用于实现简单的循环(若以结束循环,需要借助 IF 和 leave,一定用到 leave,就必须使用 标注名称(标签名称))
WHILE: 先判断后执行
REPEAT:先执行后判断,循环体至少执行一次

循环结构,一定具备四要素

  1. 初始化条件
  2. 循环条件
  3. 循环体
  4. 迭代条件 更新 循环条件中的值

跳转语句 iterate 、 leave

leave语句:可以用在**循环(loop、while、repeat)**语句中,或者 以 begin…end 包裹起来的 程序体内,表示跳出 循环体或者 跳出程序体的操作。 相当于 beak

leave 标记名

在这里插入图片描述
在这里插入图片描述
iterate语句:只能在循环语句(loop、while、repeat)内,表示结束本次循环,跳转下次循环。 相当于 continue, 再次循环。

iterate label;
laberl:循环的标注名称。

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

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

相关文章

stack,queue,deque的使用

1.stack是后进先出的&#xff0c;这也影响其对应的接口&#xff0c;所能实现的功能也有限&#xff0c;其中主要的功能如下&#xff1a; void test_stack1() {stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);st.push(6);while (!st.empty()){c…

香港服务器备案会通过吗?

​  对于企业或个人来说&#xff0c;合规备案是网络运营的基本要求&#xff0c;也是保护自身权益的重要举措。以下内容围绕备案展开话题&#xff0c;希望为您解开疑惑。 香港服务器备案会通过吗? 目前&#xff0c;香港服务器无法备案&#xff0c;这是由于国内管理规定的限制…

netty(一):NIO——处理消息边界

处理消息边界 为什么要处理边界 因为会存在半包和粘包的问题 1.客户端和服务端约定一个固定长度 优点&#xff1a;简单 缺点&#xff1a;可能造成浪费 2.客户端与服务端约定一个固定分割符 *缺点 效率低 3.先发送长度&#xff0c;再发送数据 TLV格式&#xff1a; type…

Linux问题--docker启动mysql时提示3306端口被占用

问题描述&#xff1a; 解决方法&#xff1a; 1.如果需要kill掉mysqld服务可以先通过 lsof -i :3306 2. 查询到占用3306的PID&#xff0c;随后使用 kill -15 PID 来kill掉mysqld服务。 最后结果

我的创作纪念日(C++修仙练气期总结)

分享自己最喜欢的一首歌&#xff1a;空想フォレスト—伊東歌詞太郎 机缘 现在想想自己在CSDN创作的原因&#xff0c;一开始其实就是想着拿着博客当做自己的学习笔记&#xff0c;笔记嘛&#xff0c;随便写写&#xff0c;自己看得懂就ok了的态度凸(艹皿艹 )。也是用来作为自己学习…

Android动画进阶指北

原文链接 Android Animation Advanced Tricks 前面的文章介绍了动画的基本使用方法&#xff0c;本文来聊一聊涉及到动画的高级技巧&#xff0c;以及一些非常优质的学习资源和动画三方库和框架。 页面之间的过渡动画 常规的动画都是针对某一页面上的某个元素做动画&#xff0c…

CentOS系统环境搭建(十四)——CentOS7.9安装elasticsearch-head

centos系统环境搭建专栏&#x1f517;点击跳转 关于node的安装请看上一篇CentOS系统环境搭建&#xff08;十三&#xff09;——CentOS7安装nvm&#xff0c;&#x1f517;点击跳转。 CentOS7.9安装elasticsearch-head 文章目录 CentOS7.9安装elasticsearch-head1.下载2.解压3.修…

Vue3.X 掌握基础知识(二)

接着上一篇 Vue3.X 创建简单项目&#xff08;一&#xff09;&#xff0c;我们接着往下了解Vue的一些简单的功能。 一、HomeView.vue的改写复习 这里我们介绍数据的绑定、判断、for循环等功能。 <template><h1>hello world</h1><p v-text"data.na…

计算机网络基础

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页&#xff1a;KC老衲爱尼姑的博客主页 博主的github&#xff0c;平常所写代码皆在于此 共勉&#xff1a;talk is cheap, show me the code 作者是爪哇岛的新手&#xff0c;水平很有限&…

C# 设置、获取程序,产品版本号

右键&#xff0c;程序属性。打开“程序集信息” 选择需要设置的版本信息。下面的代码&#xff0c;获取不同的设置内容。 string 其他 Assembly.GetExecutingAssembly().FullName; string 程序集版本 Assembly.GetExecutingAssembly().G…

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification (Paper reading) Renrui Zhang&#xff0c;Shanghai AI Laboratory&#xff0c;ECCV2022&#xff0c;Cited:45&#xff0c;Code&#xff0c;Paper 1. 前言 对比式视觉-语言预训练&#xff0c;也称…

javaScript:对函数的认识与应用

目录 一.前言 二.函数介绍 A.函数的分类 1.自定义函数 示例 2.匿名函数 声明匿名函数 计时器也是匿名函数 3.立即执行函数 解释 示例 B.函数的返回值 没有参数&#xff0c;没有返回值的函数 示例 没有参数&#xff0c;有返回值的函数 示例 有参数&#xff0c;有…

【Leetcode】108. 将有序数组转换为二叉搜索树

一、题目 1、题目描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。 示例1: 输入:nums = [-10,-3,0,5,9] 输出:[0,-3,9,-1…

java学习——二叉树

二叉树的种类&#xff1a; 满二叉树&#xff1a;如果一棵二叉树只有度为0的结点和度为2的结点&#xff0c;并且度为0的结点在同一层上&#xff0c;则这棵二叉树为满二叉树。 完全二叉树&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层…

spring源码分析bean的生命周期(下)

doGetBean()执行过程 createBean()执行过程 一、DependsOn注解 spring创建对象之前会判断类上是否加了DependsOn注解&#xff0c;加了会遍历然后会添加到一个map中&#xff0c;spring会先创建DependsOn注解指定的类 二、spring类加载器 在合并BeanDefinition&#xff0c;确定…

时序数据库influxdb笔记

官方资料 https://docs.influxdata.com/influxdb/v2.7/install/?tLinux https://www.influxdata.com/influxdb/ 安装 1、linux平台下 1&#xff09;下载 2&#xff09;解压 3&#xff09;添加账户&#xff08; adduser influx&#xff09; 4&#xff09;设置目录权限 5…

操作符详解(1)

1. 操作符分类&#xff1a; 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 1. 除了 % 操作符之外&#xff0c;其他的几个操作符可以作用于整数和浮点数。 2. 对…

技术文档如何在线搭建网页形式,方便编辑与管理分享其他人员?

搭建在线技术文档网页形式的平台可以方便编辑、管理和分享给其他人员&#xff0c;促进团队的协作和知识共享。 搭建在线技术文档网页形式的步骤和具体操作的详细介绍&#xff1a; 1. 选择适合的平台 首先&#xff0c;需要选择适合搭建在线技术文档网页形式的平台。市面上有很…

深入完整的带你了解java对象的比较

目录 元素的比较 1.基本类型的比较 2.对象比较的问题 1.运行结果 2.疑问 3.原因 对象的比较 1.覆写基类的equals 2.基于Comparble接口类的比较 3.基于比较器比较 4.三种方式对比 元素的比较 1.基本类型的比较 在Java 中&#xff0c;基本类型的对象可以直接比较大…

dockerfile的概念

目录 一.Dockerfile 概念 1.1 docker镜像的分层 二.Docker镜像的创建 2.1基于已有的镜像创建 2.2基于本地模板创建 2.3基于dockerfile创建 2.3.1dockerfile 结构(四部分) 三.Dockerfile操作指令 3.1ENTRYPOINT指令 3.2CMD 与entrypoint 四.ADD和copy区别 五.镜像分层的原…