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

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. ARM指针寄存器——堆栈指针寄存器SP、程序计数器PC、连接寄存器LR详解

    堆栈的实现方法    在随机存储器区划出一块区域作为堆栈区,数据可以一个个顺序地存入(压入)到这个区域之中,这个过程称为'压栈'(push ).通常用一个指针(堆栈指针 SP-StackPointer ...

  2. java 从零开始手写 redis(十)缓存淘汰算法 LFU 最少使用频次

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  3. centos7安装mailx

    1.安装mailx yum install mailx -y 2.配置证书 mkdir -p /root/.certs echo -n | openssl s_client -connect smtp ...

  4. Mysql一张表可以存储多少数据

    Mysql一张表可以存储多少数据 在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB.同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB.(确切 ...

  5. win32 - 多字节下的中文字符打印到文本中

    #include <Windows.h> #include <stdio.h> #include <io.h> #include <fcntl.h> # ...

  6. 商店销售预测(回归&随机森林)

    ​ 目录 一.题目概要 二.导入包和数据集 三.数据处理 四.描述性分析 五.探索性数据分析 六.模型一:线性回归 七.模型2:随机森林 一.题目概要 在Kaggle竞赛中,要求我们应用时间序列预测, ...

  7. OkHttp 拦截器的一些操作

    OkHttp 拦截器的一些操作  转自:  https://blog.csdn.net/songzi1228/article/details/116782794

  8. 默认形参和关键字实参,收集参数,命名关键字参数,return自定义返回,全局变量和局部变量,函数名的使用---day10

    1.函数定义处(默认形参在函数的定义) 1.1.函数的调用处(关键字实参在函数的调用处) 2.收集参数 (1)收集参数: (1) 普通收集参数 在参数的前面加一个*,代表的是普通收集参数 作用:收集多 ...

  9. django中信号

    # 信号的理解 在某个行为进行的某个阶段给这个行为添加一个附带的行为 # 相关api ## 数据表 pre_init # django的model执行其构造方法前,自动触发 post_init # d ...

  10. 现代 CSS 解决方案:accent-color 强调色

    accent-color 是从 Chrome 93 开始被得到支持的一个不算太新属性.之前一直没有好好介绍一下这个属性.直到最近在给一些系统整体切换主题色的时候,更深入的了解了一下这个属性. 简单而言 ...