MySQL基础--存储过程

  1. 存储过程定义
    存储过程和函数:类似于java中的方法

    • 好处: .
      1、提高代码的重用性
      2、简化操作

  2. 存储过程

    • 含义:一 组预先编译好的SQL语句的集合,理解成批处理语句
      1、 提高代码的重用性
      2、简化操作
      3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率.

    • 创建语法

      • CREATE PROCEDURE 存储过程名(参数列表)
        BEGIN
        存储过程体(一组合法的sQL语句)
        : END

      • 注意:

        • 参数列表包含三部分
          参数模式参数名参 数类型
          举例:
          IN stuname VARCHAR (20)

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

        •  如果存储过程体仅仅只有一句话,BEGIN END可以省略
          存储过程体中的每条sQL语句的结尾要求必须加分号。
          存储过程的结尾可以使用DELIMITER 重新设置
          语法:
          DELIMITER 结束标记
          案例:
          DELIMITER S

    • 调用
      • call 存储过程名(实参列表);
    • 空参列表存储过程
      • DELIMITER $
        CREATE PROCEDURE myp1 ()
        BBEGIN

        • INSERT INTO admin (username,、password. )
          VALUES('john1', '0000'),('lily', '0000');

      • END $

      • call myp1();
    •  参数带in类型的参数的存储过程

      • CREATE PROCEDURE myp2 (IN beautyName VARCHAR (20) )
        BEGIN

        • SELECT bo. *
          FROM boys bo
          RIGHT JOIN beauty b ON bo.id = b.boyfriend_ id

      • END $

      • call myp2('xxxx'); 

    • :创建存储过程实现,用户是否登录成功

      • CREATE PROCEDURE myp4 (IN username VARCHAR (20) , IN PASSWORD VARCHAR (20) )
        BEGIN

        • DECLARE result INT DEFAULT 0;#声 明并初始化
          SELECT COUNT(*) INTO result#赋值
          FROM admin
          WHERE
          admin. username = username
          AND admin. password = PASSWORD;
          SELECT IF (result>0, '成功','失败') ;#使用

      • END $

      • #调用
        CALL myp3('张飞', '8888');

    • 创建带out模式参数的存储类型

      • CREATE PROCEDURE myp5 (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 $

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

      • CREATE PROCEDURE myp8 (INOUT a INT , INOUT b INT)
        BEGIN

        • SET a=a*2;
          SET b=b*2 ;

      • END $

      • #调用
        SET @m=10$
        SET @n=20$
        CALL myp8 (@m, @n) S
        SELECT @m, @n

    • 运行案例

    1. 创建参数是in模式存储过程
    2. 创建参数有out模式的存储过程
    3. 创建带有inout模式参数的存储过程
    4. 创建传入日期传出字符串格式日期的存储过程
  3. 存储过程的删除
    • drop procedure 存储过程名
    • drop procedure 存储过程名1,存储过程名2
  4. 查看存储过程的信息
    • show create procedure 存储过程名;

 

posted @ 2021-05-10 18:27  张紫韩  阅读(70)  评论(0编辑  收藏  举报