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

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. 2023年多校联训NOIP层测试5

    2023年多校联训NOIP层测试5 T1 糖果 \(10pts\) 首先考虑一些异或的性质: 归零率:\(a \bigoplus a=0\) 恒等律:\(a \bigoplus 0=a\) 交换律:\ ...

  2. 【React】排查两小时,修改一个词,记一个因代码书写不规范导致的生命周期BUG

    壹 ❀ 引 因为现在工作主要以修bug为主,日常工作中总是会接触到千奇百怪的前端问题,它可能是代码缺陷导致的程序错误,也可能是方案不合理造成的性能问题,老实说修bug是一件很枯燥的事情,你需要阅读大量 ...

  3. 扯淡的DevOps,我们开发根本不想做运维!

    引言 最初考虑引用" DevOps 已死,平台工程才是未来"作为标题,但这样的表达可能太过于绝对.最终,决定用了"扯淡的"这个词来描述 DevOps,但这并不是 ...

  4. renren-fast-vue@1.2.2 项目编译报错: build `gulp`

    问题呈现: PS D:\Code\Java\ideaWorkspace\renren-fast-vue> npm run build > renren-fast-vue@1.2.2 bui ...

  5. useEffect与useLayoutEffect

    useEffect与useLayoutEffect useEffect与useLayoutEffect可以统称为Effect Hook,Effect Hook可以在函数组件中执行副作用操作,副作用是指 ...

  6. windbg 分析 32 位进程的 64 位转储文件

    场景: x86 的项目在 x64 的 windows 机器上运行时出现未响应的情况,使用任务管理器创建该进程的转储文件 因为项目是 32 位的,所以使用 x86 的 windbg 来调试 dmp 文件 ...

  7. win32-EnumChildWindows的使用

    #include <Windows.h> #include <iostream> #include <string> static BOOL CALLBACK en ...

  8. 最简单的python判断是否是回文

    def isNumberPalindrome(number): if isinstance(number, int): number = str(number) return number == nu ...

  9. Celey异步发送邮件时报django.core.exceptions.ImproperlyConfigured的解决办法

    原main.py入口文件 #Celery的入口 from celery import Celery #创建Celery实例 生产者 celery_app = Celery('meiduo') #加载配 ...

  10. C++ STL 容器-Vector类型

    C++ STL 容器-Vector类型 std::vector是C++标准库中的一个动态数组容器,它提供了随机访问迭代器,因此你可以像使用普通数组一样使用vector. vector容器可以动态地增长 ...