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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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;
目录
相关文章
|
2月前
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
165 3
|
2月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
2月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
282 11
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
存储 SQL 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.9. GIN 和 GiST 索引类型
12.9. GIN 和 GiST 索引类型 有两种索引可以被用来加速全文搜索。注意全文搜索并非一定需要索引,但是在一个定期会被搜索的列上,通常需要有一个索引。 CREATE INDEX name ON table USING GIN(column); 创建一个基于 GIN(通用倒排索引)的索引。
1733 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 11 章 索引_11.2. 索引类型
11.2. 索引类型 PostgreSQL提供了多种索引类型: B-tree、Hash、GiST、SP-GiST 、GIN 和 BRIN。每一种索引类型使用了 一种不同的算法来适应不同类型的查询。
1441 0

推荐镜像

更多