Mysql数据库 12.SQL语言 储存过程 下 储存过程管理和游标

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Mysql数据库 12.SQL语言 储存过程 下 储存过程管理和游标

一、存储过程管理

1.查询存储过程

查询所有储存过程

语法

show procedure status;

代码实现
#查询存储过程
show procedure status;
运行结果

加入条件查询储存过程

语法

show procedure status where db='储存过程名';

代码实现
#查询带有条件的储存过程 查询名字为proc_test1的储存过程
show procedure status where Name='proc_test1';
运行结果

查询创建细节

查询db_test2表中的proc_test1存储过程;

代码实现
#查询创建细节
show create procedure db_test2.proc_test1;
运行结果

2.修改储存过程

修改储存过程指的是修改存储过程的特征/特性


语法

alter procedure 储存过程名 特征1 [特征2 特征3……];


存储过程的特征参数


案例

代码实现
#修改储存过程
alter procedure proc_test1 reads sql data;


运行结果



3.删除储存过程


语法

drop procedure 储存过程名;



案例

代码实现
#删除储存过程
drop procedure proc_test1;
运行结果

修改结果

游标:拼接查询结果

问题:如果我们要创建一个存储过程,需要返回查询语句查询到的多条数据


游标的概念

游标可以用来依次取出查询结果集中的每一条数据——逐条读取查询结果集中的记录


游标的作用

在储存过程中查询多条语句

游标的使用步骤

查询表中的多个记录逐条返回所有记录


1.声明游标语法:

关键字:cursor

游标配合查询语句


declare 游标名字 cursor for 某个查询结果/查询条件;2.打开游标

关键字:open

oppen 游标名字;


3.使用游标

关键字:fetch

游标名字 into 数据放到的变量中


案例


创建储存过程

代码实现
#创建储存过程
create  procedure proc_test13(out result varchar(200))
begin
  #游标变量
  declare cid int;
  declare cname varchar(20);
  #定义计数变量
  declare num int;
  declare i int;
  #定义存储每条数据的变量
  declare str varchar(100);
  #定义游标
  #查询语句执行之后返回一个结果集(多条记录),使用游标遍历查询结果
  #游标的作用:可以把当前查询到的所有数据变成一个结果集,游标会记录每一项数据
  #在使用前先定义游标,记录总数据量打开游标进行遍历
  declare mycursor cursor for 
    select class_id,name from classes c ;
  #记录总数据量
  select count(*) into num from classes c ;
  #打开游标
  open mycursor;
  set i=0;
  #开始遍历
  while i<num do
    #提取游标中的每一条数据,并将结果赋值给游标变量 fetch关键字提取数据
    fetch mycursor into cid,cname;
    set i=i+1;
    #定义每条数据
    #concat_ws用指定的符号将所有字符串拼接在一起
    set str = concat_ws('~',cid,cname); 
    #select concat_ws('~',cid,cname \) into str;
    set result = concat_ws(',',result,str); 
  end while;
  #关闭游标
  close mycursor;
end;
运行结果

调用储存过程

代码实现
#调用储存过程
set @r = '';
call proc_test13(@r);
select @r from dual;
运行结果

数据被拼接在一起

游标的作用:将表中多个数据拼接在一起进行查询


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
92 15
|
7天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
14天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
17天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
15天前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
55 3
|
18天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
20天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
21天前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
26天前
|
SQL 存储 Oracle
南大通用GBase 8s数据库游标变量解析:提升数据库操作效率
南大通用GBase 8s 数据库游标变量解析:提升数据库操作效率
|
26天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据