十一、流程控制结构

目录

  • 介绍
  • 分支结构
    • 一、if函数
    • 二、case函数
    • 三、if结构
  • 循环结构
    • 分类
    • 循环控制
    • 语法
    • 语法
    • 语法
    • 案例
    • 循环结构总结
  • 小练习

介绍

顺序结构:程序从上至下依次执行
分支结构:程序从两条或多条路径中选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码

分支结构

一、if函数

功能:

实现简单的双分支

语法:

select if(表达式1, 表达式2, 表达式3);

执行顺序:

如果表达式1成立,返回表达式2的值,否则返回表达式3的值

应用场景:

任何地方

二、case函数

功能:

1、一般用于实现等值判断
2、一般用于实现区间判断(多重 if 判断)

特点:

① 可以作为表达式,嵌套在其它语句中使用,可放在任何地方,也可作为独
立的语句去使用,只能放在begin end中。
② 如果 when 中的值满足或者成立,则执行对应的then后面的语句,并且结
束case,如果都不满足,则执行else语句或值。
③ else可以省略,如果else省略了并且所有when条件都不满足则返回null

语法:

情况1:用于实现等值判断
case 变量|表达式|字段
when 要判断的值 then 返回值1或语句1
when 要判断的值 then 返回值2或语句2
.....
else 返回值n
end
情况2:用于实现区间判断
case
when 要判断的条件1 then 返回值1或语句1
when 要判断的条件2 then 返回值2或语句2
.....
else 返回值n
end

执行顺序:

如果表达式1成立,返回表达式2的值,否则返回表达式3的值

应用场景:

任何地方

三、if结构

功能:实现多重分支

语法:

if 条件1 then 语句1;
elseif 条件2 then 语句2;
......
else 语句n;
end if;

应用场景:

在存储过程或函数begin end 中。

循环结构

分类

while、loop、repeat

循环控制

iterate,跳出本次循环,继续下次循环
leave,结束当前循环
while

语法

【标签:】while 循环条件 do
循环体;
end while【标签】;
loop

语法

【标签:】loop
循环体;
end loop【标签】;
repeat

语法

【标签:】repeat
循环体;
until 结束循环的条件
end repeat【标签:】;

案例

1、批量插入,根据传入循环次数插入到 admin 表中多条记录

# 查询 admin 表信息
select * from admin;
Empty set   # 结果是空的,没有任何数据
# 创建存储过程
create procedure pro_while(in while_num int)
begin
    declare i int default 1;
    while i <= while_num do
            insert into admin(username, `password`) values(concat('demo', i), concat('666', i));
        set i = i + 1;
    end while;
end
# 执行存储过程
call pro_while(5);
# 查询 admin 表信息
select * from admin;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  1 | demo1    | 6661     |
|  2 | demo2    | 6662     |
|  3 | demo3    | 6663     |
|  4 | demo4    | 6664     |
|  5 | demo5    | 6665     |
+----+----------+----------+

2、批量插入,根据传入循环次数插入到 admin 表中多条记录,如果 次数 > 6 则停止

# 查询 admin 表信息
select * from admin;
Empty set   # 结果是空的,没有任何数据
# 创建存储过程
create procedure pro_while(in while_num int)
begin
    declare i int default 1;
    flag:while i <= while_num do
        if i > 6 then leave flag;
        end if;
        insert into admin(username, `password`) values(concat('demo', i), concat('666', i));
        set i = i + 1;
    end while flag;
end
# 执行存储过程
call pro_while(15);
# 查询 admin 表信息
select * from admin;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  1 | demo1    | 6661     |
|  2 | demo2    | 6662     |
|  3 | demo3    | 6663     |
|  4 | demo4    | 6664     |
|  5 | demo5    | 6665     |
|  6 | demo6    | 6666     |
+----+----------+----------+

3、批量插入,根据传入循环次数插入到 admin 表中多条记录,只插入偶数次

# 查询 admin 表信息
select * from admin;
Empty set   # 结果是空的,没有任何数据
# 创建存储过程
create procedure pro_while(in while_num int)
begin
    declare i int default 0;
    flag:while i <= while_num do
        set i = i + 1;
        if mod(i, 2) != 0 # i 对 2 取余
        then iterate flag;
        end if;
        insert into admin(username, `password`) values(concat('demo', i), concat('666', i));
    end while flag;
end
# 执行存储过程
call pro_while(15);
# 查询 admin 表信息
select * from admin;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  1 | demo2    | 6662     |
|  2 | demo4    | 6664     |
|  3 | demo6    | 6666     |
|  4 | demo8    | 6668     |
|  5 | demo10   | 66610    |
|  6 | demo12   | 66612    |
|  7 | demo14   | 66614    |
|  8 | demo16   | 66616    |
+----+----------+----------+

4、repeat循环批量插入

# 创建
create procedure pro_while(in while_num int)
begin
    declare i int default 0;
    flag:repeat
        insert into admin(username, `password`) values(concat('demo', i), concat('666', i));
        set i = i + 1;
    until i > while_num end repeat flag;
end
# 调用
call pro_while(15);

5、loop循环批量插入

# 创建
create procedure pro_while(in while_num int)
begin
    declare i int default 0;
    flag:loop
        insert into admin(username, `password`) values(concat('demo', i), concat('666', i));
        set i = i + 1;
        if i > while_num then leave flag;
        end if;
    end loop flag;
end
# 调用
call pro_while(15);

循环结构总结

名称 语法 特点 位置
while lebel:while loop_condition do loop_listend while lebel; 先判断后执行 begin end中
repeat label:repeat loop_listuntil end_conditionend repeat label; 先执行后判断 begin end中
loop label:loop loop_listend loop label; 没有条件的死循环 begin end中

小练习

创建表 demo 其中字段包括:id、content
向该表插入指定个数的随机字符串

# 创建 demo 表
create table demo(
  id int(11) primary key auto_increment,
  contnet varchar(20) not null
)
# 创建存储过程
create procedure insert_demo(in insert_count int)
begin
    # 定义循环变量,表示插入次数
    declare i int default 1;

    # 定义所有字符
    declare str varchar(26) default 'abcdefghijklmnopqrstuvwxyz';

    # 代表起始索引
    declare start_index int default 1;

    # 代表截取的字符长度
    declare len int default 1;

    # 实际插入内容
    declare content varchar(20) default '';

    while i <= insert_count do
        # 随机数,向下取整 rend()产生值 * 26 + 1
        set start_index = floor(rand() * 26 + 1);

        # 产生随机整数,代表截取长度,1 - (26 - start_index + 1)
        set len = floor(rand() * (20 - start_index + 1) + 1);

        # 产生随机整数,代表起始索引1~26
        set content = subsrt(str, start_index);

        insert into demo(`content`) value(content);

        # 循环变量更新
        set i = i + 1;
    end while;
end
# 执行存储过程
call insert_demo(5);
# 查询 demo 表
select * from demo;
+----+-------------+
| id | content     |
+----+-------------+
|  1 | bcdefgh     |
|  2 | mnopqrs     |
|  3 | hij         |
|  4 | fghijk      |
|  5 | pqrstuvwxyz |
+----+-------------+

原文地址:https://www.cnblogs.com/yliucnblogs/p/11523641.html

时间: 2024-10-11 09:33:34

十一、流程控制结构的相关文章

C语言流程控制结构—顺序结构、选择结构

C语言3种流程控制结构:顺序结构.选择结构.循环结构. 顺序结构 最简单的结构,不需要关键字.安照代码顺序一步步执行. 选择结构 (一)if简单使用 1) 第一种结构:if a) 如果条件为真,就执行后面的语句,否则不执行. if(条件) { 语句1: 语句2: } 2) 第二种结构:if - else a) 如果条件成立就执行语句1,否则执行语句2. if(条件) { 语句1: } else { 语句2: } 3) 第三种结构:if - else if - else... a) 先判断条件1,

流程控制结构

一.流程控制结构 1.顺序结构:按书写顺序执行每一条语句. 2.选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码. 3.循环结构:在给定条件成立的情况下,反复执行某一段代码. 二.选择结构-if if简单使用 (1) 第一种结构: a) 如果条件为真,就执行后面的语句,否则不执行. if(条件) { 语句1: 语句2: ···· } (2) 第二种结构: a) 如果条件成立就执行语句1,否则执行语句2. if(条件) { 语句1: } else { 语句2: } (3) 第三种结构

其他(四) -- 流程控制结构

流程控制结构 说明: 顺序结构:程序从上往下依次执行 分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行 循环结构:程序满足一定条件下,重复执行一组语句 分支结构 特点: 1.if 函数功能:实现简单双分支语法:IF(条件, 值1, 值2)位置可以作为表达式放在任何位置2.case 结构功能:实现多分语法1:CASE 表达式或字段WHEN 值1 THEN 语句1;WHEN 值2 THEN 语句2;...ELSE 语句n;END [CASE]; 位置: 可以放在任何位置, 如果放在

流程控制结构(十)

流程控制结构 系统变量 一.全局变量 作用域:针对于所有会话(连接)有效,但不能跨重启 查看所有全局变量 SHOW GLOBAL VARIABLES; 查看满足条件的部分系统变量 SHOW GLOBAL VARIABLES LIKE '%char%'; 查看指定的系统变量的值 SELECT @@global.autocommit; 为某个系统变量赋值 SET @@global.autocommit=0; SET GLOBAL autocommit=0; 二.会话变量 作用域:针对于当前会话(连接

Go基础系列:流程控制结构

条件判断结构:if else 分支选择结构:switch case 循环结构:for break:退出for或switch结构(以及select) continue:进入下一次for迭代 虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号.甚至有些时候使用括号会报错,但有些复杂的条件判断需要使用括号改变优先级. 如: if (name == "longshuai" && age > 23) || (name == "xiaofan

PHP系列(一)PHP流程控制结构

while(){} do{ }while(); for( 表达式1; 表达式2;表达式3 ){ 语句或语句序列; } if(){} if(){ }elseif{} <?php $i=0; while(true) { if($i>=100) break; echo "@@@@@@@@@@@@.$i.<br>"; $i++; } ?> <?php echo "<table border=1=800>"; echo &quo

PHP的流程控制结构

1.break 使用break语句可以将深埋在嵌套循环中的语句退出到指定层数或直接退出到最外层,break是接受一个可选的数字参数来决定跳出几重语句.break可以跳出几重语句.break可以跳出几重循环语句或是几重switch语句.代码如下所示: <?php $i = 0;        while (++$i) {           switch ($i) {                case 5:                     echo "变量为5时,只退出swit

C语言流程控制结构—循环结构

循环结构 循环结构-while While(条件) { 语句: } 解说:先判断条件是否成立,成立则执行,执行完代码后再次判断条件是否成立(判断条件->执行代码块->判断条件->执行代码块···) 1.首先确定循环执行的操作(循环体内语句) 2.在确定约束条件,即需要循环多少次(循环体判断条件) 3.定义一个变量来记录循环的次数(根据需要进行定义,或不定义) 提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判

JavaSE基础知识(3)—流程控制结构

一.顺序结构 1.说明 程序从上往下依次执行,中间没有任何跳转或选择2.特点 变量必须遵循 "前向引用" (局部变量必须先声明.赋值,然后再使用!) 二.分支结构(条件) 1.说明 程序从两条或多条路径中,选择一条去执行 2.分类   语法 执行顺序 注意事项   if结构  1.单分支 if(条件){ 代码块1; } 先判断条件是否成立, 如果成立,则执行代码块1.否则跳过if结构,往下执行 ①条件 的结果只能是boolean类型,形式可以为: 关系表达式 逻辑表达式 oolean变