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

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. NC14402 求最大值

    题目链接 题目 题目描述 给出一个序列,你的任务是求每次操作之后序列中 (a[j]-a[i])/(j-i)[1<=i<j<=n]的最大值. 操作次数有Q次,每次操作需要将位子p处的数 ...

  2. ARM 中常用的汇编指令解释汇总

    前言 嵌入式项目中经常涉及到需要通过分析编译后的汇编文件,来确定异常代码,对一些常用的指令进行了汇总. 一.处理器内部数据传输指令 在ARM架构中,包括Cortex-A7处理器内部,有一些专门用于数据 ...

  3. Java中的包装类(wrapper class)

    1.介绍 顾名思义,包装类是封装Java原始类型的对象.每个Java原始类型都有一个对应的包装类: 基本类型 包装类 boolean Boolean byte Byte short Short cha ...

  4. shell脚本实现进度条程序

    1.实现效果 2.shell脚本 #!/bin/bash i=0 bar='' index=0 arr=( "|" "/" "-" &quo ...

  5. 01、NATS基础介绍

    01.NATS基础介绍 项目中使用到了 NATS,但是之前并没有接触过,所以特意去学习了下,网上找了些资料,相对来说,都不是很全的介绍,所以特意记录下笔记,方便自己掌握,也希望可以帮助到其他小伙伴. ...

  6. C#多线程(10):读写锁

    目录 ReaderWriterLockSlim ReaderWriterLockSlim 常用方法 订单系统示例 并发字典写示例 ReaderWriterLock 本篇的内容主要是介绍 ReaderW ...

  7. Nebula Importer 数据导入实践

    本文首发于 Nebula Graph Community 公众号 前言 Nebula 目前作为较为成熟的产品,已经有着很丰富的生态.数据导入的维度而言就已经提供了多种选择.有大而全的Nebula Ex ...

  8. 千卡利用率超98%,详解JuiceFS在权威AI测试中的实现策略

    2023 年 9 月,AI 领域的权威基准评测 MLPerf 推出了 Storage Benchmark.该基准测试通过模拟机器学习 I/O 负载的方法,在不需要 GPU 的情况下就能进行大规模的性能 ...

  9. Codeforces Round 170 (Div. 1)A. Learning Languages并查集

    如果两个人会的语言中有共同语言那么他们之间就可以交流,并且如果a和b可以交流,b和c可以交流,那么a和c也可以交流,具有传递性,就容易联想到并查集,我们将人和语言看成元素,一个人会几种语言的话,就将这 ...

  10. C语言趣味编程之抓交通肇事犯

    include <stdio.h> main() { int i, j, k, temp;//i,j,k,分别表示前两位车牌号.后两位车牌号和车牌号,temp为验证是否车牌号为某个数的平方 ...