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;
目录
相关文章
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
638 1
|
4月前
|
SQL 存储 关系型数据库
第二篇:关系型数据库的核心概念与 SQL 基础
本篇内容深入浅出地讲解了关系型数据库的核心概念与SQL基础,适合有一定计算机基础的学习者。文章涵盖数据库的基本操作(CRUD)、数据类型、表的创建与管理等内容,并通过实例解析SELECT、INSERT、UPDATE、DELETE等语句的用法。此外,还推荐了多种学习资源与实践建议,帮助读者巩固知识。学完后,你将掌握基础数据库操作,为后续高级学习铺平道路。
212 1
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
247 62
|
2月前
|
SQL 存储 关系型数据库
MySQL功能模块探秘:数据库世界的奇妙之旅
]带你轻松愉快地探索MySQL 8.4.5的核心功能模块,从SQL引擎到存储引擎,从复制机制到插件系统,让你在欢声笑语中掌握数据库的精髓!
|
2月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
98 11
|
2月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL中的数据库对象
本教程详细介绍了MySQL数据库中的常见对象,包括表、索引、视图、事件、存储过程和存储函数的创建与管理。内容涵盖表的基本操作、索引的使用、视图简化查询、事件调度功能等,并通过具体示例演示相关SQL语句的使用方法。
|
2月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
226 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
这是一份详细的MySQL安装与配置教程,适合初学者快速上手。内容涵盖从下载到安装的每一步操作,包括选择版本、设置路径、配置端口及密码等。同时提供基础操作指南,如数据库管理、数据表增删改查、用户权限设置等。还介绍了备份恢复、图形化工具使用和性能优化技巧,帮助用户全面掌握MySQL的使用方法。附带常见问题解决方法,保姆级教学让你无忧入门!
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
|
4月前
|
关系型数据库 MySQL 定位技术
MySQL与Clickhouse数据库:探讨日期和时间的加法运算。
这一次的冒险就到这儿,期待你的再次加入,我们一起在数据库的世界中找寻下一个宝藏。
185 9
|
4月前
|
存储 关系型数据库 MySQL
【赵渝强老师】OceanBase数据库从零开始:MySQL模式
《OceanBase数据库从零开始:MySQL模式》是一门包含11章的课程,涵盖OceanBase分布式数据库的核心内容。从体系架构、安装部署到租户管理、用户安全,再到数据库对象操作、事务与锁机制,以及应用程序开发、备份恢复、数据迁移等方面进行详细讲解。此外,还涉及连接路由管理和监控诊断等高级主题,帮助学员全面掌握OceanBase数据库的使用与管理。
258 5