【DataBase】MySQL 28 流程控制
一、分支结构
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 流程控制的更多相关文章
- Database(Mysql)发版控制二
author:skate time:2014/08/18 Database(Mysql)发版控制 The Liquibase Tool related Database 一.Installation ...
- MySQL数据库----流程控制
流程控制 1.条件语句 举例一 delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THE ...
- MySQL 存储过程 -流程控制的使用
#五.流程控制的使用 #1.IF 使用 create PROCEDURE iftest1() BEGIN DECLARE a int DEFAULT 10; -- IF (a>1 &&a ...
- MySql存储过程及MySql常用流程控制语法
/* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...
- mysql之流程控制
目录 分支结构 循环结构 分支结构: 1.if condition then [statement] elseif condition then [statement] else [statement ...
- MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引
本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 ------------------------------------------------------------------ ...
- MySQL之视图、触发器、事务、存储、函数、流程控制
一.视图 视图就是一个虚拟表,我们把复杂的sql语句后看到的虚拟表封装起来,给他取个名字,当我们下次使用的时候,就不用再去写复杂的sql语句,直接调用封装后的视图名字,就可以得到我们想要的表,然后就可 ...
- MySQL之视图、触发器、事务、存储过程、函数 流程控制
MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...
- MySQL数据库(六)-- SQL注入攻击、视图、事物、存储过程、流程控制
一.SQL注入攻击 1.什么是SQL注入攻击 一些了解sql语法的用户,可以输入一些关键字 或合法sql,来导致原始的sql逻辑发生变化,从而跳过登录验证 或者 删除数据库 import pymysq ...
- MySQL视图、触发器、事务、存储过程、内置函数、流程控制、索引
一.视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果频繁使用一张虚拟表,可以不用重复查询 3.如何使用视图 create view tea ...
随机推荐
- vue过滤器 - filters
在数据被渲染之前,可以对其进行进一步处理,比如将字符截取或者将小写统一转换为大写等等,过滤器本身就是一个方法. 过滤器可以定义全局或局部 # 全局 // 回调函数中的参数1永久是绑定的数据 Vue.f ...
- 极限科技(INFINI labs)荣获中国信通院大数据“星河”标杆案例
12 月 6 日,由中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)共同组织的 2023 大数据"星河(Galaxy)"案例评选结果正式公示. ...
- INFINI Labs 产品更新 | 修复 Easysearch 跨集群复制索引同步问题,Gateway 内存异常增长等问题
INFINI Labs 产品又更新啦~,本次更新主要对 Easysearch.Gateway.Console.Agent 等产品功能进行优化和相关 Bug 修复,解决了内存异常增长等问题,以下是详细说 ...
- 玩转Zabbix智能告警:降噪、排班、认领、升级、IM协同
Zabbix作为一款流行的企业级监控工具,可以监控各种网络设备和服务的状态,并提供强大的告警功能,能够在出现异常情况时及时通知管理员.以下是Zabbix的一些特点: 支持多种监控方式,包括SNMP.J ...
- (六)基于Scrapy爬取网易新闻中的新闻数据
需求:爬取这国内.国际.军事.航空.无人机模块下的新闻信息 1.找到这五个板块对应的url 2.进入每个模块请求新闻信息 我们可以明显发现''加载中'',因此我们判断新闻数据是动态加载出来的. 3. ...
- Vue学习:8.v标签综合-强化版
通过前几节的认识和学习,我们掌握了常用v标签的用法,这一节再来巩固提高一下吧. 实例:成绩面板 实现功能: 主体由两大部分组成:表格+表单.这个表格可以显示多科成绩,并具有表头.删除以及底部统计功能. ...
- 调用支付JSAPI缺少参数:total_fee解决方法
1.https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7 调用支付JSAPI缺少参数:total_fee 1.请检查预支付会话标识p ...
- java和javac编译和运行记事本编写的代码
演示代码如下: package com.springboot.demo; public class Hello { public static void main(String[] args) { S ...
- PowerBI_一分钟了解POWERBI计算组_基础运用篇(一)
在第一篇计算组的文章中,给大家介绍了,POWERBI的计算组功能的基本概念和作用. 本文,旨在通过简单案例,介绍计算组功能的具体应用场景. 没有看过第一篇的同学,可以先简单过一下第一篇,补齐一下概念和 ...
- k8s健康检查(探针Probe)之LivenessProbe、ReadinessProbe和StartupProbe
背景 集群正常服务时,会出现容器死掉问题,如宿主机故障.资源不足.下游故障等.这个时候容器需要从endpoints摘除(容器挂了就不能接流了),并执行它的restart策略. LivenessProb ...