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

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

数据被拼接在一起

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


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
23天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
62 11
|
1月前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
156 3
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
1月前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
19天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
45 3
|
19天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
47 3