流程控制结构
顺序、分支、循环

1. 分支结构

  • if函数
语法:if(条件,值1,值2)
功能:实现双分支
应用在begin end中或外面
  • case结构
语法:
情况1:类似于switch
case 变量或表达式
when 值1 then 语句1;
when 值2 then 语句2;
...
else 语句n;
end 情况2:
case
when 条件1 then 语句1;
when 条件2 then 语句2;
...
else 语句n;
end 应用在begin end 中或外面
  • if结构
语法:
if 条件1 then 语句1;
elseif 条件2 then 语句2;
....
else 语句n;
end if;
功能:类似于多重if只能应用在begin end 中

#案例1:创建函数,实现传入成绩,如果成绩>90,返回A,如果成绩>80,返回B,如果成绩>60,返回C,否则返回D

CREATE FUNCTION test_if(score FLOAT) RETURNS CHAR
BEGINDECLARE ch CHAR DEFAULT 'A';IF score>90 THEN SET ch='A';ELSEIF score>80 THEN SET ch='B';ELSEIF score>60 THEN SET ch='C';ELSE SET ch='D';END IF;RETURN ch;
END $SELECT test_if(87)$

#案例2:创建存储过程,如果工资<2000,则删除,如果5000>工资>2000,则涨工资1000,否则涨工资500

CREATE PROCEDURE test_if_pro(IN sal DOUBLE)
BEGINIF sal<2000 THEN DELETE FROM employees WHERE employees.salary=sal;ELSEIF sal>=2000 AND sal<5000 THEN UPDATE employees SET salary=salary+1000 WHERE employees.`salary`=sal;ELSE UPDATE employees SET salary=salary+500 WHERE employees.`salary`=sal;END IF;END $CALL test_if_pro(2100)$

#案例1:创建函数,实现传入成绩,如果成绩>90,返回A,如果成绩>80,返回B,如果成绩>60,返回C,否则返回D

CREATE FUNCTION test_case(score FLOAT) RETURNS CHAR
BEGIN DECLARE ch CHAR DEFAULT 'A';CASE WHEN score>90 THEN SET ch='A';WHEN score>80 THEN SET ch='B';WHEN score>60 THEN SET ch='C';ELSE SET ch='D';END CASE;RETURN ch;
END $SELECT test_case(56)$

2. 循环结构

分类:

while、loop、repeat

循环控制:

iterate类似于 continue,继续,结束本次循环,继续下一次
leave 类似于  break,跳出,结束当前所在的循环
  • while
语法:
【标签:】while 循环条件 do循环体;
end while【 标签】;
联想:
while(循环条件){循环体;
}
  • loop
语法:
【标签:】loop循环体;
end loop 【标签】;可以用来模拟简单的死循环
  • repeat
语法:
【标签:】repeat循环体;
until 结束循环的条件
end repeat 【标签】;

1.没有添加循环控制语句
#案例:批量插入,根据次数插入到admin表中多条记录

DROP PROCEDURE pro_while1$
CREATE PROCEDURE pro_while1(IN insertCount INT)
BEGINDECLARE i INT DEFAULT 1;WHILE i<=insertCount DOINSERT INTO admin(username,`password`) VALUES(CONCAT('Rose',i),'666');SET i=i+1;END WHILE;
END $CALL pro_while1(100)$int i=1;
while(i<=insertcount){//插入i++;}

2.添加leave语句

#案例:批量插入,根据次数插入到admin表中多条记录,如果次数>20则停止

TRUNCATE TABLE admin$
DROP PROCEDURE test_while1$
CREATE PROCEDURE test_while1(IN insertCount INT)
BEGINDECLARE i INT DEFAULT 1;a:WHILE i<=insertCount DOINSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');IF i>=20 THEN LEAVE a;END IF;SET i=i+1;END WHILE a;
END $CALL test_while1(100)$

3.添加iterate语句

#案例:批量插入,根据次数插入到admin表中多条记录,只插入偶数次

TRUNCATE TABLE admin$
DROP PROCEDURE test_while1$
CREATE PROCEDURE test_while1(IN insertCount INT)
BEGINDECLARE i INT DEFAULT 0;a:WHILE i<=insertCount DOSET i=i+1;IF MOD(i,2)!=0 THEN ITERATE a;END IF;INSERT INTO admin(username,`password`) VALUES(CONCAT('xiaohua',i),'0000');END WHILE a;
END $CALL test_while1(100)$int i=0;
while(i<=insertCount){i++;if(i%2==0){continue;}插入
}

Mysql流程控制结构相关推荐

  1. 尚硅谷-MySQL流程控制结构

    MySQL流程控制结构 顺序结构:程序从上到下依次执行 分支结构:程序可以从俩条或多条路径中选择一条执行 循环结构:程序在满足一定条件的基础上,重复执行一段代码 一.分支结构 1.IF函数 功能:实现 ...

  2. 十六、MySQL流程控制结构(顺序、分支、循环)详解 强化练习

    流程控制结构:顺序.分支.循环 一.分支结构 case结构作为表达式: case结构作为独立的语句: if函数 语法:if(条件,值1,值2) 功能:实现双分支 应用在begin end中或外面 ca ...

  3. MySQL 基础 ———— 流程控制结构

    引言 MySQL 中的流程控制作为基础知识的最后一块拼图,显得并不是特别重要,而且,在实际生产开发中,也往往不需要通过它来进行程序的控制,那么为什么还要学习它呢?我认为有以下几点: 1.知识的完整性: ...

  4. MySQL之流程控制结构(分支,循环)

    流程控制结构 顺序结构:程序从上往下依次执行 分支结构:程序从两条或多条路径中选择一条去执行 ①IF函数:实现简单的双分支 IF(条件,结果1,结果2) ②CASE结构:相当于switch或多重if, ...

  5. Mysql数据库基础知识(五)之:视图、变量、存储过程、函数、流程控制结构

    第一部分:Mysql数据库基础知识(一)之 基础查询----分组查询 第二部分:Mysql数据库基础知识(二)之 连接查询----子查询-----分页查询------union联合查询 第三部分:My ...

  6. mysql数据库入门教程(15):流程控制结构

    一.流程控制结构介绍 #流程控制结构 /* 顺序.分支.循环 */ 1.分支结构 #1.if函数 /* 语法:if(条件,值1,值2) 功能:实现双分支 应用在begin end中或外面 如果条件成立 ...

  7. 尚硅谷李玉婷老师MySQL课程--视图、变量、存储过程和函数、流程控制结构

    一.视图 1.视图的创建 CREATE VIEW 视图名 AS 查询语句; 例1: create view myv as select avg(salary),job_id from employee ...

  8. MySQL流程控制的使用

    流程控制语句,用于将多个SQL语句,划分或组成成符合业务逻辑的代码块 流程控制语句 包括,IF语句.CASE语句.LOOP语句.WHILE语句.LEAVE语句.ITERATE语句.REPEAT语句和W ...

  9. MySQL06:变量、存储过程和函数、流程控制结构

    6.变量.存储过程和函数.流程控制结构 变量 分类 系统变量: 全局变量 会话变量 自定义变量: 用户变量 局部变量 系统变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添 ...

最新文章

  1. Android 开发包括哪些方面?如何提升?
  2. 数据结构和算法:第七章 排序
  3. OpenGL 高级光照Advanced Lighting
  4. [转载] 什么是istio 官网内容
  5. CF896E Welcome home,Chtholly/[Ynoi2018]五彩斑斓的世界(并查集+第二分块)
  6. kafka与Spring的集成
  7. java算术表达式求值-中缀表达式转后缀表达式
  8. Redis3.x 源码安装
  9. 计算机体系架构未来趋势(深度)
  10. windows影音制作工具安装教程
  11. SitePoint博客的3大变化
  12. bootbox.js bootbox.promt()
  13. PyMc01短信推断
  14. 看了《我的白大褂》才明白,原来平安是福
  15. 设置socket IP_TOS选项
  16. C++进制转换程序(二进制转换为十进制,十进制转换为二进制)
  17. CA认证简单介绍和工作流程
  18. 什么鬼,Kubelet 重启之后容器也跟着重启了?
  19. 曾仕强《中国式管理-人际关系学》笔记 下
  20. 高斯课堂 计算机网络(下)

热门文章

  1. 4.29python
  2. 【转】jQuery.ajax向后台传递数组问题
  3. machine learning (5)---learning rate
  4. Spring+Quartz 集群
  5. 生成模型和判别模型对比
  6. 分数运算C++代码实现
  7. legacy bios与uefi两种模式安装windows8操作系统的方法
  8. Linux下实用的查看内存和多核CPU状态命令
  9. Unix——百度百科
  10. ustc小道消息20220113