【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)

https://www.cnblogs.com/cnb-yuchen/p/17991087

出自【进步*于辰的博客

参考笔记三,P32.5。

用于测试的数据表:

1、选择语句

需求:输入员工名emp_name,获取部门id对应的部门名称。

1.1 if

格式:

if 条件1 then 语句1 elseif 条件2 then 语句2 else 语句3 end if;

示例:

CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN `emp_name` varchar(20))
BEGIN
declare deptId int default 0;
select dept_id into deptId from emps where name = emp_name; IF deptId = 1 THEN
select '开发部' from dual;
ELSEif deptId = 2 THEN
select '策划部' from dual;
else
select '其他部门' from dual;
END IF;
END

测试:



测试结果:

1.2 case

1.2.1 形式一

格式:

case when 条件1 then 语句1 when 条件2 then 语句2 else 语句3 end case;

示例:

CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN `emp_name` varchar(20))
BEGIN
declare deptId int default 0;
select dept_id into deptId from emps where name = emp_name; case
when deptId = 1 THEN
select '开发部' from dual;
when deptId = 2 THEN
select '策划部' from dual;
else
select '其他部门' from dual;
END case;
END

1.2.2 形式二

格式:

case 参数 when 值1 then 语句1 when 值2 then 语句2 else 语句3 end case;

示例:

CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN `emp_name` varchar(20))
BEGIN
declare deptId int default 0;
select dept_id into deptId from emps where name = emp_name; case deptId
when 1 THEN
select '开发部' from dual;
when 2 THEN
select '策划部' from dual;
else
select '其他部门' from dual;
END case;
END

2、循环语句

需求:输入一个数n,计算1 ~ n的总和。

2.1 while

格式:

while 结束条件 do 语句 end while;

示例:

CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN n int)
BEGIN
declare sum int default 0; while n > 0
do
set sum = sum + n;
set n = n - 1;
end while; select sum;
END

测试:



测试结果:

2.2 repeat

格式:

repeat 语句 until 结束条件 end repeat;

示例:

CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN n int)
BEGIN
declare sum int default 0; REPEAT
set sum = sum + n;
set n = n - 1;
UNTIL n < 0 end REPEAT; select sum;
END

2.3 loop

格式:

xx:loop if 条件1 then [leave xx;] end if; if 条件2 then [iterate xx;] end if; end loop xx
// leave类似break(必须有,作为循环终止);iterate类似continue。

示例:

CREATE DEFINER=`root`@`localhost` PROCEDURE `TestProcess`(IN n int)
BEGIN
declare sum int default 0; calSum: loop
if n < 0 then
leave calSum;// leave 类似于 break
end if; set n = n - 1; if n = 5 then
iterate calSum;// iterate 类似于 continue
end if; set sum = sum + n;
end loop calSum; select sum;
END

n < 0时,循环结束;当n = 5时,跳过此次循环。当然,这个例子的测试结果不是55。

最后

本文中的例子是为了方便大家了解MySQL流程控制语句的格式及使用而简单举例的,不一定有实用性。

如果大家想要了解存储过程,可查阅博文《[MySQL]关于存储过程的理解与简述》。

本文完结。

[MySQL]流程控制语句的更多相关文章

  1. MYSQL进阶学习笔记三:MySQL流程控制语句!(视频序号:进阶_7-10)

    知识点四:MySQL流程控制语句(7-10) 选择语句: (IF ELSE ELSE IF CASE 分支)IFNULL函数 IF语法: 语法规则: IF search_condition THEN ...

  2. mysql流程控制语句

    mysql编程 mysql编程中语句块包含符: 其实就是相当于js或php中大括号语法: [标识符:]begin //语句.... end  [标识符]: 标识符就是定义定义的任意的名字而已,比如: ...

  3. Mysql高手系列 - 第18篇:mysql流程控制语句详解(高手进阶)

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 这是Mysql系列第18篇. 环境:mysql5.7.25,cmd命令中进行演示. 代码中被[]包含的表示可选,|符 ...

  4. 流程控制语句(MySQL/MariaDB )

    本文目录:1.BEGIN...END2.true和false3.if结构4.case结构5.loop.leave和iterate6.repeat循环7.while循环 MySQL/MariaDB中的符 ...

  5. MySQL全面瓦解20:可编程性之流程控制语句

    背景 说到流程控制语句,我们在程序语法中用的比较多,比如C#的if..else...,while...,?: 等.同样的,在MySQL中,也有一些流程控制的语法,方便我们在写函数.存储过程的时候对逻辑 ...

  6. 流程控制语句if基本概述

    目录 1. 流程控制语句if基本概述 2. 流程控制语句if文件比较 判断文件是否存在,返回方式 使用变量的方法进行判断 请输入你要备份的数据库名称: wordpress 请输入你要备份的数据库密码: ...

  7. 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用

    目录 学习笔记:CentOS7学习之二十一: 条件测试语句和if流程控制语句的使用 21.1 read命令键盘读取变量的值 21.1.1 read常用见用法及参数 21.2 流程控制语句if 21.2 ...

  8. Linux | Shell流程控制语句

    流程控制语句 简单的Shell 脚本还不能满足我们日常工作的需要要,因为他不能批量的帮我们完成工作,所以Shell引入了 if.for.while.case 4种流程控制语句来帮助我们完成工作. if ...

  9. Linux Shell 流程控制语句

    * 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...

  10. 8-04流程控制语句BEGIN ..END

     流程控制语句: 是用来控制程序流程的语句. 常用的流程控制语句的分类: 顺序结构:BEGIN...END 分支结构: IF ..ELSE 或CASE ..END 循环结构:WHILE 顺序结构 语法 ...

随机推荐

  1. CF1089K King Kog's Reception 题解

    题目传送门 前置知识 线段树 解法 第一眼感觉和 luogu P1083 [NOIP2012 提高组] 借教室 很像.本题同样采用线段树维护,\(sum_{l,r}(1 \le l \le r \le ...

  2. SATA学习笔记——Link Layer 加扰/解扰/CRC

    一.故事前传 我们之前说到Link layer的结构,link layer的作用大致可以包括以下几点: Frame flow control CRC的生成与检测 对数据与控制字符的Scrmable/D ...

  3. Java核心技术卷1:基础知识(原书第10版)

    本书为专业程序员解决实际问题而写,Java基础知识面覆盖很完整,可以帮助你深入了解Java语言和库.在卷I中,Horstmann主要强调基本语言概念和现代用户界面编程基础,深入介绍了从Java面向对象 ...

  4. Lora 模块E22-400T22D(SX1268, 22dBm)

    无线串口(UART)模块, 基于SEMTECH SX1268射频芯片, 具有多种传输方式, 工作在410.125至493.125MHz频段(默认 433.125MHz). LoRa扩频技术, TTL电 ...

  5. 【OpenGL ES】渐变凸镜贴图

    1 前言 ​ 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,凸镜贴图 中介绍了将圆形图片上的纹理映射到凸镜模型上.如果将原图片逐渐变为凸镜效果,中间的变化过程又是什么样的? ​ 图片的 ...

  6. ORA-22828 输入样式或替换参数超过了32k大小限制

    今天调试程序报以下错误: ORA-22828: input pattern or replacement parameters exceed 32K size limit 22828. 00000 - ...

  7. 跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA)

    跨越千年医学对话:用AI技术解锁中医古籍知识,构建能够精准问答的智能语言模型,成就专业级古籍解读助手(LLAMA) 介绍:首先在 Ziya-LLaMA-13B-V1基线模型的基础上加入中医教材.中医各 ...

  8. Mac技巧之苹果电脑上将一个软件进程的 CPU 占用率限制在指定范围内:cputhrottle

    苹果电脑 Mac OS X 系统上,我们可以用 cputhrottle 这个免费工具,配合活动监视器和终端,把一个软件进程的 CPU 占用率限制在指定值(比如 20%)以内,以防止应为它 " ...

  9. pytho代码分析示例

    a = 5 b = 6 c = 10 for i in range(n): for j in range(n): x = i * j y = j * j z = i * j for k in rang ...

  10. rpm的一些命令

    rpm -q xx #查询当前的包是否安装 rpm -qi xx # 查询当前包的详细信息 rpm -qpi 包文件路径 # 没装之前先查看包的信息 rpm -qpl 包文件路径 # 预计装上后会在系 ...