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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
存储 关系型数据库 MySQL
轻松入门MySQL:优化复杂查询,使用临时表简化数据库查询流程(13)
轻松入门MySQL:优化复杂查询,使用临时表简化数据库查询流程(13)
159 0
|
1月前
|
SQL 缓存 关系型数据库
揭秘MySQL一条SQL语句的执行流程
以上步骤共同构成了MySQL处理SQL语句的完整流程,理解这一流程有助于更有效地使用MySQL数据库,优化查询性能,及时解决可能出现的性能瓶颈问题。
58 7
|
1月前
|
SQL 关系型数据库 MySQL
Python操作pymysql数据库的流程与技巧
在现代软件开发中,Python作为一门高效且易于学习的编程语言,广泛应用于各种场景,其中包括数据库操作。**PyMySQL** 是一个流行的Python数据库接口,用于连接和操作MySQL数据库。它提供了一种简便的方法来执行SQL语句、处理数据和管理数据库事务。以下是使用PyMySQL操作MySQL数据库的流程与技巧,旨在为开发者提供一个清晰、实用的指南。
31 0
|
3月前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
3月前
|
前端开发 NoSQL 数据库
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
|
3月前
|
前端开发 JavaScript NoSQL
软件开发常见流程之若依项目修改,前后端本地启动,本地必须有Redis+Navicate启动数据库
软件开发常见流程之若依项目修改,前后端本地启动,本地必须有Redis+Navicate启动数据库
|
4月前
|
关系型数据库 MySQL 数据库
MySQL数据库——函数-字符串函数、数值函数、日期函数、流程函数
MySQL数据库——函数-字符串函数、数值函数、日期函数、流程函数
40 2
|
5月前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
4月前
|
存储 数据库连接 数据库
逆向学习数据库篇:表设计和数据库操作的核心概念与流程
逆向学习数据库篇:表设计和数据库操作的核心概念与流程
31 0
|
5月前
|
存储 SQL 关系型数据库
【MySQL进阶之路 | 基础篇】流程控制
【MySQL进阶之路 | 基础篇】流程控制