一、分支结构

1、IF函数

语法:

IF(表达式1, 表达式2, 表达式3)  

类似三元运算符,表达式1返回True Or False

True执行表达式2,False执行表达式3

IF实现多分枝结构

IF 条件 THEN 语句;
ELSEIF 条件 THEN 语句;
ELSEIF 条件 THEN 语句;
... ...
ELSE 语句;
END IF;

只能应用在BEGIN & END 中

2、CASE结构

用于等值判断处理,也可以多判断处理

CASE 变量、字段、函数、表达式

WHEN 要判断的值1 THEN 返回值1或者语句
WHEN 要判断的值2 THEN 返回值2或者语句
WHEN 要判断的值3 THEN 返回值3或者语句
... ...
ELSE 返回值N或者语句

END

不是等值判断,以条件判断的语法:

CASE 

WHEN 条件1 THEN 返回值1或者语句
WHEN 条件2 THEN 返回值2或者语句
WHEN 条件3 THEN 返回值3或者语句
... ...
ELSE 返回值N或者语句 END

二、分支案例:

成绩分级

DELIMITER $

CREATE PROCEDURE scoreCase(IN score INT);
BEGIN
CASE
WHEN score >= 90 AND score <= 100 THEN SELECT 'A';
WHEN score >= 80 THEN SELECT 'B';
WHEN score >= 60 THEN SELECT 'C';
ELSE SELECT 'D';
END CASE;
END $

调用

CALL scoreCase(77);

使用多重IF

DELIMITER $

CREATE FUNCTION scoreByIf(score INT) RETURNS CHAR
BEGIN
IF score >= 90 AND score <= 100 THEN RETURN 'A';
ELSEIF score >= 80 THEN RETURN 'B';
ELSEIF score >= 60 THEN RETURN 'C';
ELSE RETURN 'D';
END IF;
END $

调用

SELECT scoreByIf(80) 

三、循环结构

三种循环类型:

WHILE、LOOP、REPEAT

循环控制:

iterate == continue 继续,结束本次循环,进入下一次循环
leave == break ,跳出当前的循环

WHILE语法:

[标签 :] WHILE 循环条件 DO
循环体内的逻辑
END WHILE [标签];

LOOP语法:

[标签 :] LOOP
循环体内的逻辑
END LOOP[标签];

REPEAT语法:

[标签 :] REPEAT
循环体内的逻辑
UTIL 结束循环的条件
END REPEAT [标签];

四、循环案例:

批量插入ADMIN表中

DELIMITER $;
CREATE PROCEDURE batchByWhile(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1; WHILE i <= insertCount DO
INSERT INTO admin(`username`,`password`) VALUES('AAAA','1122');
SET i = i + 1;
END WHILE;
END

调用

CALL batchByWhile(777);

 带标签的处理:

TRUNCATE admin;

DELIMITER $;
CREATE PROCEDURE batchByWhile2(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1; r1:WHILE i <= insertCount DO
INSERT INTO admin(`username`,`password`) VALUES('AAAA','1122');
IF i >= 30 THEN LEAVE r1;
END IF;
SET i = i + 1;
END WHILE r1;
END $

调用:

CALL batchByWhile2(100);

使用迭代处理:

DELIMITER $;
CREATE PROCEDURE batchByWhile3(IN insertCount INT)
BEGIN
DECLARE i INT DEFAULT 1; r1:WHILE i <= insertCount DO
SET i = i + 1;
IF MOD(i, 2) != 0 THEN ITERATE r1;
END IF;
INSERT INTO admin(`username`,`password`) VALUES('AAAA','1122');
END WHILE r1;
END $

调用

CALL batchByWhile3(222);

【DataBase】MySQL 28 流程控制的更多相关文章

  1. Database(Mysql)发版控制二

    author:skate time:2014/08/18 Database(Mysql)发版控制 The Liquibase Tool related Database 一.Installation ...

  2. MySQL数据库----流程控制

    流程控制 1.条件语句 举例一 delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THE ...

  3. MySQL 存储过程 -流程控制的使用

    #五.流程控制的使用 #1.IF 使用 create PROCEDURE iftest1() BEGIN DECLARE a int DEFAULT 10; -- IF (a>1 &&a ...

  4. MySql存储过程及MySql常用流程控制语法

    /* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...

  5. mysql之流程控制

    目录 分支结构 循环结构 分支结构: 1.if condition then [statement] elseif condition then [statement] else [statement ...

  6. MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引

    本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 ------------------------------------------------------------------ ...

  7. MySQL之视图、触发器、事务、存储、函数、流程控制

    一.视图 视图就是一个虚拟表,我们把复杂的sql语句后看到的虚拟表封装起来,给他取个名字,当我们下次使用的时候,就不用再去写复杂的sql语句,直接调用封装后的视图名字,就可以得到我们想要的表,然后就可 ...

  8. MySQL之视图、触发器、事务、存储过程、函数 流程控制

    MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...

  9. MySQL数据库(六)-- SQL注入攻击、视图、事物、存储过程、流程控制

    一.SQL注入攻击 1.什么是SQL注入攻击 一些了解sql语法的用户,可以输入一些关键字 或合法sql,来导致原始的sql逻辑发生变化,从而跳过登录验证 或者 删除数据库 import pymysq ...

  10. MySQL视图、触发器、事务、存储过程、内置函数、流程控制、索引

    一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view tea ...

随机推荐

  1. kettle从入门到精通 第三十一课 mysql 数据连接连接池配置

    无论开发应用程序还是做ETL研发,都离不开连接池的应用,如下是kettle中mysql 连接池设置界面,今天重点讲解下连接池中的参数配置. defaultAutoCommit 当 defaultAut ...

  2. Chapter1 p1 Output Image

    由于本文章是对TinyRenderer的模仿,所以并不打算引入外部库. 那么我们第一步需要解决的就是图形输出的问题,毕竟,如果连渲染的结果都看不到,那还叫什么Renderer嘛. 由于不引入外部库,所 ...

  3. 暴走漫画系列之高仿淘宝收货地址(附demo)

    引语: 我是个程序猿,一天我坐在路边一边喝水一边苦苦检查bug. 这时一个乞丐在我边上坐下了,开始要饭,我觉得可怜,就给了他1块钱. 然后接着调试程序.他可能生意不好,就无聊的看看我在干什么,然后过了 ...

  4. 微信和支付宝异步回调通知IP白名单

    附一:微信支付回调通知出口IP列表 商户侧对商户回调通知功能开通白名单网段: 上海电信出口网段:101.226.103.0/25 上海联通出口网段:140.207.54.0/25 上海CAP出口网段: ...

  5. uni-app apple store 上传新版本审核被拒绝 Guideline 5.1.1

    - Legal - Privacy - Data Collection and Storage We noticed that your app requests the user's consent ...

  6. 基于 .NET CORE + VUE 前后端项目打包,实现批处理安装,一键部署

    2023年7月18日 目前基于已完成了基于WPF界面的全自动部署小工具 自动判断相关.net core环境和依赖,自动部署mysql数据库,自动部署前后端web服务的功能. 有疑问的可以直接评论. - ...

  7. 修改Oracle数据表空间存储位置

    查看数据文件的存储路径: SQL> select name from v$datafile; NAME --------------------------------------------- ...

  8. 【读论文】CM-Gen: A Neural Framework for Chinese Metaphor Generation with Explicit Context Modelling

    为了更好的阅读体验,请点击这里 由于发不出论文,所以找点冷门方向做一做.从汉语比喻开始. 读完这篇论文之后我觉得 COLING 这方向我上我也行(ε=ε=ε=┏(゜ロ゜;)┛ 题目:CM-Gen: A ...

  9. 详解Web应用安全系列(7)使用具有已知漏洞的组件

    使用具有已知漏洞的组件,这种安全漏洞普遍存在,基于组件开发的模式使得多数开发团队根本不了解其应用或API中使用的组件,更谈不上及时更新这些组件了. 下面就分别以.NET和Java各分享一个案例. .N ...

  10. AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望

    AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望 1. AI Agent(LLM Agent)介绍 1.1. 术语 Agent:"代理&qu ...