MySQL数据库————流程控制(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL数据库————流程控制(一)

前言


SQL语言作为一个高级语言,和c语言一样,也有选择结构,只不过被叫做流程控制,作为基础语法,学好流程控制对开发也有很大的帮助。


一、顺序结构


顺序结构关键字:begin····end,相当于{······},是SQL语言中的复合语句。

顺序结构的基本格式:


begin 
   sql1代码1;
   sql2代码;
   ······
end;


二.数据库变量


1.局部变量

– 定义局部变量的基本格式:

declare 变量名 数据类型;

– 变量的初始化

declare 变量名 数据类型 default 初始值;

– 给变量赋值:

set 变量名=变量值;

注意:局部变量只能在begin····end之间使用;

例如:


delimiter //
create procedure sum3(in x int,in y int)
begin
declare z int default 0;  -- 定义一个局部变量并初始化为0;
set z=x+y;  -- 给z赋值;
select z as "两数的和";
end//
delimiter ;
call sum3(123,345);


943e2c5ab4b762a36873adc2d4efca4b_4cdf7c6902834286bd53bf11e9b51b23.png


2.用户变量

使用用户变量的一般格式:

set @变量名=变量值;

如:set @a=10; select @a; set @a='abc'; select @a; set @b="2000-1-20" select @b;

用户变量是弱类型,没有指定的数据类型,可以支持多种数据类型,可以理解为万用数据类型,用户变量只能在当前连接中使用,不同的数据库连接无法共用一个数据库变量,变量名相同也无法共用。下面用一组图片来解释。


第一次使用用户变量:


3f3f6d41801f243a8f4a706ae25b2280_ea52ea0262554c49a642053ad9736855.png


第二次继续使用第一次定义的用户变量:


4fc44ed6e49a96170ec51dd4e715a3cb_e02af99811ed4328a2ce061d86a84fd8.png


对比两次的数据我们可以发现,第二次使用数据库的时候无法再使用第一次登录定义的用户变量,简单的来说,就是你第一次连接数据库定义的用户变量第二次连接后无法再使用。


– 用户变量应用举例:


-- 使用用户变量;
delimiter //
create procedure sum4(in x int,in y int,out z int)
begin 
set z=x+y;
end//
set @a=10;
set @b=390;
call sum4(@a,@b,@c);
select @c as"两数之和"; -- 用用户变量来接收存储过程返回的值;


1832666969357a2691ed6f49a922ec5b_289404eb60a2428d996031ded55fd993.png



3.会话变量

会话变量是系统自带的,是用来保存数据库当前会话的默认数据,当前连接有效,重新连接会恢复默认值,使用会话变量的基本格式:@@会话变量名;

查看当前连接的会话变量:show session variables;



4.全局变量


和会话变量一样,全局变量也是自带的,是用来保存数据库当前服务的默认数据,当前服务有效,重启服务后恢复默认值。使用全局变量的基本格式:

@@全局变量;

查看当前服务的全局变量:

show global variables;


91f3e159fbb0df74d70e0c2b72594986_adaf64466f8d41fba47bd88e6bb7e2bc.png



三.分支选择结构


1.if else结构

①.if语句的基本格式:

if <判断条件> then <语句>; end if;

判断if之后的条件,如果条件满足则执行语句,否则不执行语句。(注意结束if需要用end if)。

②.if else语句的基本格式


if <判断条件> then <语句1>
else <语句2>;
end if;


判断条件后如果满足条件则执行语句1,否则执行语句2.

③.if else 嵌套的基本格式


if <判断条件1> then <语句1;>
else if <判断条件2> then <语句2>;
else if <判断条件3> then <语句3>;
···········
else then <语句n>
end if;


例如:对学生成绩进行分类


#分支结构的使用
delimiter //
create procedure get_grade1(in score float,out grade  varchar(30))
begin
declare s int default 0;
set s=score div 10; -- 整除;
if s=9 then set grade="优秀";
elseif s=8 then set grade="优";
elseif s=7 then set grade='良';
else if s=6 then set grade="及格";
else then set grade="不及格";
end if;
end //
delimiter ;
call get_grade1(78,@ss);
select @ss;



2.case多分支结构

case when多分支结构基本格式:


case 条件
when 值1 then 语句1;
when 值2 then 语句2;
when 值3 then 语句3;
when 值4 then 语句4;
······
else 语句n+1 #相当于default
end case;


判断case之后的条件,如果条件值于其中某个when之后的值相等,则执行when中then之后的语句,如果都不满足则执行else后面的语句。

和c语言中的switch。。case语句相似;

例如:


delimiter //
create procedure sention(in score int)
begin 
declare s int default 0;
set s=score div 10;
case s
when 10 then select '满分' as 成绩等级;
when 9 then select '优秀' as 成绩等级;
when 8 then select '良好' 成绩等级;
when 7 then select '及格' 成绩等级;
when 6 then select '及格' 成绩等级;
else select '不及格' 成绩等级;
end case;
end //
delimiter ;
call sention(99);



c0ae43837cc191d9b91097b2011641dc_4363a2d0d08a488fbebabaa373bf4987.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 关系型数据库 MySQL
轻松入门MySQL:优化复杂查询,使用临时表简化数据库查询流程(13)
轻松入门MySQL:优化复杂查询,使用临时表简化数据库查询流程(13)
446 0
|
7月前
|
存储 XML JSON
Activiti 7 核心数据库表概览及流程生命周期中的作用
Activiti 7 工作流引擎通过约25张核心数据库表实现流程定义、运行时状态、历史记录与身份数据的存储。表名以ACT_开头,后跟标识用途的字母组合(如RE表示Repository静态信息,RU表示Runtime动态数据)。流程启动时在运行时表登记数据,任务执行中更新关联信息,结束时清理运行时记录并完善历史记录。各表分工明确且逻辑紧密关联,确保高效运行与完整留痕的平衡。掌握这些表的作用和关联有助于深入理解Activiti底层原理及进行高级应用开发。
518 0
|
11月前
|
SQL 存储 缓存
MySQL执行流程
本文介绍了MySQL的执行流程,分为server层和引擎层。server层包含连接器、查询缓存、解析器、预处理器、优化器等组件,负责SQL的接收、解析、优化及执行;引擎层负责数据的存储与读取。文章详细解释了各组件的功能,如连接器负责用户身份认证,查询缓存提高查询效率,解析器进行SQL的词法和语法分析,预处理器验证表和字段的存在性,优化器选择最优执行计划,最终由查询执行引擎完成查询并将结果返回给客户端。
249 0
MySQL执行流程
|
8月前
|
SQL 算法 搜索推荐
mysql 之order by工作流程
本文深入解析了MySQL中`ORDER BY`的排序机制,通过具体示例展示了排序过程及性能优化方法。文章首先分析了基于内存和磁盘的排序方式,包括`sort_buffer_size`的影响以及临时文件的使用场景。接着介绍了`rowid`排序算法,该算法通过减少参与排序的数据量来提升性能,并对比了其与传统排序的区别。此外,还探讨了随机查询`ORDER BY RAND()`的执行流程及其优化策略。最后提到了MySQL 5.6引入的优先队列排序算法,适用于仅需部分有序结果的场景。文章结合`optimizer_trace`工具详细说明了各配置参数对排序行为的影响,为优化查询提供了实用指导。
130 1
mysql 之order by工作流程
|
存储 SQL NoSQL
|
SQL 缓存 关系型数据库
揭秘MySQL一条SQL语句的执行流程
以上步骤共同构成了MySQL处理SQL语句的完整流程,理解这一流程有助于更有效地使用MySQL数据库,优化查询性能,及时解决可能出现的性能瓶颈问题。
319 7
|
SQL 关系型数据库 MySQL
Python操作pymysql数据库的流程与技巧
在现代软件开发中,Python作为一门高效且易于学习的编程语言,广泛应用于各种场景,其中包括数据库操作。**PyMySQL** 是一个流行的Python数据库接口,用于连接和操作MySQL数据库。它提供了一种简便的方法来执行SQL语句、处理数据和管理数据库事务。以下是使用PyMySQL操作MySQL数据库的流程与技巧,旨在为开发者提供一个清晰、实用的指南。
183 0
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
前端开发 NoSQL 数据库
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改

热门文章

最新文章

推荐镜像

更多