带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 带你学MySQL系列 | “存储过程”学不会,那是你没有看这篇文章!(一)

目录

image.png


1、存储过程的相关概念

什么是存储过程:

类似于java中的方法,python中的函数。

使用存储过程的好处:

1、提高代码的重用性;

2、简化操作;

3、减少了编译次数,并且减少了和数据库服务器的连接次数,提高了效率。注意:平时每执行一句sql语句,就会连接mysql服务器一次;

存储过程的含义:

一组预先编译好的SQL语句的集合。

2、存储过程的用法

1)存储过程的创建语法

create procedure 存储过程名(参数列表)
begin
     存储过程体(一组合法有效的sql语句)
end



2)对创建语法的理解

① 参数列表:参数列表包含3部分

参数模式   参数名   参数类型
例如:in  stuname  varchar(20)


② 参数模式分类

in:该参数可以作为输入,也就是该参数,需要调用方传入值。
out:该参数可以作为输出,也就是该参数,可以作为返回值。
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值。


③ 如果存储过程体仅仅只有一句话,begin/end可以省略。

Ⅰ 存储过程体中的每条sql语句的结尾,要求必须加分号。
Ⅱ 存储过程的结尾,可以使用delimiter重新设置,否则都用";"会造成混淆。
语法:delimiter 结束标记
例如:delimiter $  -- 表示以$作为结尾符号。


④ 存储过程的调用语法

call 存储过程名(实参列表);


3.空参的存储过程

"存储过程的整个执行过程,最好在CMD窗口中执行"
-- 创建一个存储过程
delimiter $
create procedure myp()
begin
      insert into admin(username,`password`)
      values ("tom","1111"),("jerry","2222"),
      ("jalen","3333"),("rose","4444"),("tonny","5555");
end $
-- 调用存储过程
call myp()$
-- 查看结果。
select * from admin$


结果如下:

image.png


4.带in模式的存储过程


image.png

1)案例:创建存储过程实现,根据部门编号,查询对应的部门名称。

-- 创建一个存储过程
delimiter $
create procedure myp2(in num int)
begin
    select e.ename,d.dname
    from emp e 
    left join dept d on e.deptno=d.deptno
    where e.deptno=num;
end $
-- 调用存储过程
call myp2(10)$


结果如下:

image.png


2)案例:创建一个存储过程实现,用户是否登陆成功。

image.png

操作如下:


-- 创建一个存储过程
delimiter $
create procedure myp3(in username varchar(10),password varchar(10))
begin 
    declare result int;
    select count(*) into result
    from admin ad
    where ad.username=username
    and ad.password=password;
    select if(count(*) > 0,"登陆成功","登陆失败") 登陆状态;
end $
-- 调用存储过程
call myp3('john','8888');


结果如下:

image.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
存储 Java 关系型数据库
java调用mysql存储过程
在 Java 中调用 MySQL 存储过程主要借助 JDBC(Java Database Connectivity)。其核心原理是通过 JDBC 与 MySQL 建立连接,调用存储过程并处理结果。具体步骤包括:加载 JDBC 驱动、建立数据库连接、创建 CallableStatement 对象、设置存储过程参数并执行调用。此过程实现了 Java 程序与 MySQL 数据库的高效交互。
|
3月前
|
存储 SQL 关系型数据库
[MySQL]存储过程
本文介绍了存储过程的概念、优点和缺点,并通过具体示例详细讲解了存储过程的创建、使用和调用方法。此外,还介绍了游标的定义和使用,帮助读者更好地理解和应用存储过程。文章旨在为读者提供一个学习和使用存储过程的实用指南。
352 18
[MySQL]存储过程
|
3月前
|
存储 SQL NoSQL
|
4月前
|
存储 关系型数据库 MySQL
MySQL 存储过程返回更新前记录
MySQL 存储过程返回更新前记录
106 3
|
4月前
|
存储 SQL 关系型数据库
MySQL 存储过程错误信息不打印在控制台
MySQL 存储过程错误信息不打印在控制台
106 1
|
4月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
69 5
|
6月前
|
存储 关系型数据库 MySQL
Mysql表结构同步存储过程(适用于模版表)
Mysql表结构同步存储过程(适用于模版表)
68 0
|
6月前
|
存储 SQL 关系型数据库
MySQL 创建存储过程注意项
MySQL 创建存储过程注意项
67 0
|
7月前
|
存储 SQL 关系型数据库
(十四)全解MySQL之各方位事无巨细的剖析存储过程与触发器!
前面的MySQL系列章节中,一直在反复讲述MySQL一些偏理论、底层的知识,很少有涉及到实用技巧的分享,而在本章中则会阐述MySQL一个特别实用的功能,即MySQL的存储过程和触发器。
142 0
|
7月前
|
存储 SQL 数据库
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数
MySQL设计规约问题之为什么要避免使用存储过程、触发器和函数