Mysql数据库 11.SQL语言 储存过程 中 流程控制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: Mysql数据库 11.SQL语言 储存过程 中 流程控制

存储过程中的流程控制

在存储过程中支持流程控制语句用于实现逻辑的控制

一、分支语句

语法:if-then-else

1.单分支语句

语法

if conditions then

            ——SQL

end if;

if conditions then
             ——SQL
end if;

——如果参数a的值为1,则添加一条班级信息

案例

创建一个储存过程,如果参数a的值为1,则添加一条班级信息

代码实现
创建存储过程
#创建一个储存过程
create procedure proc_test7(in a int)
begin
  #单分支 if语句
  if a=1 then
    insert into classes(name,class_remark) values('Java2204','test');
  end if;
end;
#———如果参数a的值为1,则添加一条班级信息
调用存储过程
#调用存储过程
call proc_test7 (1);
call proc_test7 (2);
运行结果
创建存储过程

调用存储过程

2.双分支语句

双分支:如果条件成立执行SQL1,否则执行SQL2

语法

if conditions then

       ——SQL1

else

       ——SQL2

end if;

if conditions then 
        ——SQL1
else
        ——SQL2
end if;
案例

如果参数为1,创建学生信息,如果参数不为1,创建班级信息

代码实现
创建存储过程
#创建存储过程
create procedure proc_test8(in a int)
begin
  if a=1 then
    insert into classes(name,class_remark) values('Java2208','test');
  else
    insert into students(stu_num,name ,stu_gender,stu_age,cid)
    values('20220110','小虎','女',19,1);
  end if;
end;
调用存储过程
#调用储存过程
call proc_test8 (1); 
call proc_test8 (3);
运行结果
创建存储过程
调用储存过程

3.switch case语句


语法

create procedure 储存过程名(参数)

begin

       case a

               when 1 then

执行的SQL语句1;

               when 2 then

                       执行的SQL语句2;

               else

                       执行的SQL语句3;

       end case;

end;

create procedure 储存过程名(参数)
begin
        case a
                when 1 then
                        执行的SQL语句1;
                when 2 then
                        执行的SQL语句2;
                else
                        执行的SQL语句3;
        end case;
end;
案例

case 多分支语句

代码实现
创建储存过程
create procedure proc_test9(in num int)
begin
  case num
    when 1 then
    #如果a的值为1,执行以下操作
      insert into classes(name,class_remark) values('Java2208','test');
    when 2 then
    #如果a的值为2,执行以下操作
      insert into students(stu_num,name ,stu_gender,stu_age,cid)
      values('20220111','小刚','男',22,2);
    else
    #如果a的值不为1也不为2,执行以下操作
      update students set stu_age=18 where stu_num ='20220110';
      #修改学生年龄
  end case;
end;
调用储存过程
#调用储存过程
call proc_test9 (2);
call proc_test9 (3);
运行结果
创建储存过程

调用储存过程

二、循环语句

1.while循环

语法

create procedure 储存过程名(传递的参数)

begin

       declare i int        #局部变量

               set i=0        #局部变量赋值

               while 循环条件 do

                       SQL语句

               end while;        #结束循环

       end;                        #结束储存过程

create procedure 储存过程名(传递的参数)
begin
        declare i int        #局部变量
                set i=0        #局部变量赋值
                while 循环条件 do
                        SQL语句
                end while;        #结束循环
        end;                        #结束储存过程
案例
代码实现
创建储存过程
#while循环 创建储存过程
create procedure proc_test10(in num int)
begin
  declare i int;
  set i=0;
  while i<num do
    insert into classes (name,class_remark)
      values(concat('Java',i),'......');
    #concat()拼接字符串函数
    set i=i+1;
  end while;
end;
调用储存过程
#调用储存过程
call proc_test10 (4);
运行结果
创建储存过程

调用储存过程

执行结果

编号自动增加

2.repeat循环

案例
代码实现
创建储存过程
#repeat循环
#创建储存过程
create procedure proc_test11(in num int)
begin
  declare i int;
  set i=1;
  repeat
    insert into classes (name,class_remark)
      values(concat('C++',i),'......');
    #concat()拼接字符串函数
    set i=i+1;
  #循环结束条件 类似于do while语句
  until i>num
  end repeat;
end;
调用储存过程
#调用储存过程
call proc_test11 (4);
运行结果
创建储存过程

调用储存过程

执行结果

3.loop循环

语法

create procedure 储存过程名(参数)

begin

       declare i int;        #定义局部变量

       set i=0;                #赋值局部变量

       myloop:loop        #给loop循环起名

               执行的SQL语句;

               set i=i+1        #迭代语句

              if i=num then  #循环结束条件

                       leave myloop;

               end if;             #结束判断

       end loop;                #结束循环

end;

create procedure 储存过程名(参数)
begin
        declare i int;        #定义局部变量
        set i=0;                #赋值局部变量
        myloop:loop        #给loop循环起名
                执行的SQL语句;
                set i=i+1        #迭代语句
               if i=num then  #循环结束条件
                        leave myloop;
                end if;             #结束判断
        end loop;                #结束循环
end;
案例

创建储存过程

loop == 循环+判断

代码实现
创建储存过程
#创建储存过程
# loop == 循环+判断
create procedure proc_test12(in num int)
begin
  declare i int;
  set i=0;
  myloop:loop
    insert into classes (name,class_remark)
      values(concat('Python',i),'......');
    set i=i+1;
    if i=num then
      leave myloop;
    end if;
  end loop;
end;
调用储存过程
#调用储存过程
call proc_test12(4); 
运行结果
创建储存过程

调用储存过程

执行结果


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
21天前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
57 3
|
16天前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
175 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
15天前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
16天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
16天前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
15天前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
21天前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
222 7
|
21天前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
79 1
|
21天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
10月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。

推荐镜像

更多