MySQL学习笔记(九)-MySQL存储过程

MySQL学习笔记(九)-MySQL存储过程

作者:就叫易易好了
日期:2020/12/01

好处:提高代码的重用性,简化操作

储存过程:

含义:一种预先编译好的SQL语句的集合,理解成批处理语句。

好处:

  • 提高了代码的重用性
  • 简化操作
  • 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。

一、创建存储过程

create procedure 存储过程名(参数列表)
begin
     存储过程体(一组合法的SQL语句)
END

注意:

参数列表包含三部分,参数模式,参数名,参数类型

参数模式:
IN:该参数可以作为输入,也就是该参数需要调用
OUT:该参数可以作为输出,也就是该参数可以作为返回值
INOUT:该参数可以作为输入也可以作为输出,
       也就是该参数需要传入值,也可以返回值。

举例:
IN stuname VARCHAR(20)

注意事项:

  • 如果存储过程体只有一句话,那么BEGIN AND 可以省略。

  • 存储过程体中的每条SQL语句的结尾要求必须加分号

  • 存储过程的结尾可以使用DELIMITER重新设置

    DELIMITER 结束标记

    例如:DELEMITER //

二、调用语法

CALL 过程存储名(实参列表)

1、空参列表

#案例:插入到admin表中五条记录(girls数据库中)
在命令提示符里输入以下语句:
DELIMITER //
CREATE PROCEDURE myp1()
BEGIN
INSERT INTO admin(username,`password`)
VALUES('马保国1','1111'),
('马保国2','2222'),
('马保国3','3333'),
('马保国4','4444'),
('马保国5','5555');
END  //

这样的话存储过程就创建好了,然后我们来调用这个存储过程:

CALL myp1()//

显示OK,我们就可以来查看这个存储过程,使用以下语句:

SELECT * FROM ADMIN//

2、创建带IN模式参数的存储过程

#案例:创建存储过程实现 根据女神名,查询对应的男神信息
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN 
	SELECT bo.*
	FROM boys bo
	RIGHT JOIN beauty b ON bo.id=b.boyfrind_id
	WHERE b.name=beautyName;
END //
然后再根据上面类似的方法来调用

3、创建到out模式的存储过程

CREATE PROCEDURE myp34(IN beautyName VARCHAR(20),OUT boyName VARCHAR (20))
BEGIN
	SELECT bo.boyName  INTO boyName
	FROM boys bo
	INNER JOIN beauty b ON bo.id = b.boyfriend_id
	WHERE b.name=beautyName;
END//

#调用
CALL myp5('小昭',@bName)//
SELECT @bName//

4、创建带inout模式参数的存储过程

#案例:传入a和b两个值,最终a和b都翻倍并返回
CREATE PROCEDURE myp4(INOUT a INT ,INOUT b INT)
BEGIN 
	SET a=a*2;
	SET b=b*2;  
END $
#再调用
SET @m=10$
SET @N=20$
CALL myp4(@m,@n)$
SELECT @m,@n$

三、存储过程的删除

语法:DROP PROCEDURE 存储过程名

比如我要删除myp1,可以使用以下语句:

DROP PROCEDURE myp1;

注意,存储过程只能一个一个删除,如果使用

DROP PROCEDURE myp1,myp2,myp3;

会报错~

四、查看存储过程的信息

语法:

SHOW CREATE PROCEDURE 存储名

比如我要查看myp2的存储过程信息,可以使用以下语句:

SHOW REATE PERCEDURE  myp2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值