mysql存储过程

本文详细介绍了在创建存储过程时的关键要素,包括确定目的、处理输入输出、编写SQL语句以及在school数据库中操作存储过程,如展示和删除。还展示了如何使用DROPPROCEDURE语句删除名为search的存储过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当创建一个存储过程时,我们需要考虑以下几个方面:

  1. 存储过程的目的和功能: 首先确定存储过程的目的,是为了执行何种功能,如查询、更新、删除等。

  2. 存储过程的输入和输出: 确定存储过程是否需要接收参数,并且需要确定参数的数据类型和数量。同时,确定存储过程是否需要返回结果,如果需要返回结果,需要定义返回结果的类型和形式。

  3. 编写存储过程的 SQL 语句: 根据存储过程的目的和功能,编写包含 SQL 语句的存储过程主体。

  4. 创建存储过程: 最后将这些步骤组合起来,创建存储过程并在数据库中保存。

以上表为例

创建存储过程用查询

DELIMITER //

CREATE PROCEDURE search(IN student_id INT)
BEGIN
    SELECT ci.id AS id, ci.name AS name, cs.score AS score, ci.age AS age, ci.address AS address
    FROM class1_infor ci
    INNER JOIN class1_score cs ON ci.id = cs.id
    WHERE ci.id = student_id;
END //

DELIMITER ;
  1. DELIMITER //: 这里设置了自定义的分隔符为 //,这是为了告诉 MySQL 解析器,直到遇到 // 才认为存储过程的定义结束。这是因为在存储过程的定义中可能包含多个语句,而默认的分隔符 ; 可能会导致解析器在遇到分号时认为语句结束,而不是存储过程的结束。

  2. CREATE PROCEDURE search(IN student_id INT): 这里开始了存储过程 search 的创建,它接收一个 INT 类型的参数 student_id

  3. BEGIN: 存储过程体的开始。

  4. SELECT ci.id AS id, ci.name AS name, cs.score AS score, ci.age AS age, ci.address AS address: 这是查询语句,用于从 class1_inforclass1_score 表中检索数据。通过内连接 (INNER JOIN),将两个表连接起来,然后根据 student_id 进行过滤,选择对应学生的信息。在结果中,将学生的 idnamescoreageaddress 进行了别名的设置。

  5. END //: 存储过程体的结束。这里使用了定义的自定义分隔符 // 来表示存储过程的结束。

  6. DELIMITER ;: 恢复默认的分隔符 ;,这样后续的 SQL 语句又可以使用分号作为结束符号了。

show procedure status like '%search%'\G;

show procedure status 是用来显示数据库中存储过程的信息,like '%search%' 是用来筛选包含 "search" 的存储过程名称。

  • Db: 存储过程所在的数据库名称为 school
  • Name: 存储过程的名称为 search
  • Type: 类型为 PROCEDURE,表示它是一个存储过程。
  • Definer: 定义者为 root@localhost,表示存储过程是由 root 用户在本地 localhost 上创建的。
  • Modified: 最后修改时间为 2024-03-27 16:36:02
  • Created: 创建时间为 2024-03-27 16:36:02
  • Security_type: 安全类型为 DEFINER
  • Comment: 评论为空。

删除存储过程

要删除存储过程,可以使用 DROP PROCEDURE 语句,指定要删除的存储过程的名称。

DROP PROCEDURE IF EXISTS search;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值