SQL(11) 流程控制结构 while+loop+repeat

第一部分的内容:

SQL(2)DQL语言 条件查询+排序查询+常见函数+分组查询+连接查询

https://blog.csdn.net/Lee_Yu_Rui/article/details/107527594

SQL(3)DQL语言 子查询+分页查询+联合查询

https://blog.csdn.net/Lee_Yu_Rui/article/details/107566293

SQL(4)DML语言 增删改

https://blog.csdn.net/Lee_Yu_Rui/article/details/107584843

SQL(5) DDL语言 库和表的创建,修改和删除

https://blog.csdn.net/Lee_Yu_Rui/article/details/107598414

SQL(6) 数据的常见约束和标识项

https://blog.csdn.net/Lee_Yu_Rui/article/details/107603411

SQL(7)TCL 事务控制语言 特点+演示+隔离级别+save point

https://blog.csdn.net/Lee_Yu_Rui/article/details/107603412

SQL(8)视图的创建+修改+删除+更新

https://blog.csdn.net/Lee_Yu_Rui/article/details/107603444

SQL(9)变量:系统变量和自定义变量

https://blog.csdn.net/Lee_Yu_Rui/article/details/107619291

SQL(10) 命令行的存储过程和函数

https://blog.csdn.net/Lee_Yu_Rui/article/details/107619368

感谢以下链接的教学分享,很好的视频和资源,笔记记录在这里,便于日后查看

新i版-链接: https://pan.baidu.com/s/1GDhRzV_3lUQaETsH4CM8zQ 提取码: rpte
 

流程控制结构

/*
    顺序结构:程序从上到下执行 
    分支结构:多选一
    循环结构
*/

 一 分支结构


1.if 语法

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

2.case 

/*
作为表达式就是then 后面是值,放在begin end内外都行    
作为独立语句使用,只能放在 begin end中 对应【】
1. 等值判断
    case 变量
    when 判断的值 then 返回的值【或语句;】
    when 判断的值 then 返回的值【或语句;】
    ...
    else 返回的值【或语句;】
    end 【case】;
2. 非等值判断
    case 
    when 条件1 then 返回的值【或语句;】
    when 条件1 then 返回的值【或语句;】
    ...
    else 返回的值【或语句;】
    end 【case】;
*/


# 案例 创建存储过程,根据传入的成绩,显示等级,比如传入的成绩>90->A (80,90) B

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


CALL test_case(95)$


3.if结构

/*
实现多重分支
语法:
    if 条件1 then 语句1;
    elseif 条件2 then 语句2;
    [else 语句n;]
    end if;

只能用在begin end 中

*/

# 案例 创建存储过程,根据传入的成绩,返回等级,比如传入的成绩>90->A (80,90) B

 

CREATE FUNCTION test_if2(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$

 二 循环结构

/*
分类
    while 
    loop
    repeat
循环控制
    iterate 类似continue
    leave   类似break
*/

1.while 

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

2.loop

/*
【标签:】loop 
    循环体;
end loop 【标签】;
可以模拟死循环
*/

3.repeat

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

# 案例 批量插入,插入admin表中多条记录

 CREATE PROCEDURE pro_while1(IN inserCount INT)
 BEGIN
    DECLARE i INT DEFAULT 1;
    a:WHILE  i <= inserCount DO
        INSERT INTO admin(`username`,`password`) VALUES(CONCAT('Rose',i),'666');
        SET i = i +1;
    END WHILE a;
 END $

CALL pro_while1(100)$

TRUNCATE TABLE admin$
# 案例[添加leave] 批量插入,插入admin表中多条记录  次数大于20  停止

 CREATE PROCEDURE pro_while2(IN inserCount INT)
 BEGIN
    DECLARE i INT DEFAULT 1;
    a:WHILE  i <= inserCount DO
        INSERT INTO admin(`username`,`password`) VALUES(CONCAT('AMY',i),'000');
        IF i>=20 THEN LEAVE a;
        END IF;
        SET i = i +1;
    END WHILE a;
 END $

CALL pro_while2(100)$

# 案例[添加iterate] 批量插入,插入admin表中多条记录  只插入偶数次

 CREATE PROCEDURE pro_while3(IN inserCount INT)
 BEGIN
    DECLARE i INT DEFAULT 1;
    a:WHILE  i <= inserCount DO
        INSERT INTO admin(`username`,`password`) VALUES(CONCAT('AMY',i),'000');
        IF MOD(i,2)!=0 THEN ITERATE a;
        END IF;
        SET i = i +1;
    END WHILE a;
 END $

CALL pro_while3(100)$

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lee_Yu_Rui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值