美文网首页
黑猴子的家:mysql 存储过程案例练习

黑猴子的家:mysql 存储过程案例练习

作者: 黑猴子的家 | 来源:发表于2019-02-28 11:06 被阅读0次
    1、注意事项
    (1)sqlyog 存储笔记案例 ,里面的案例在dos演示
    (2)sqlyog 这个第三方客户端,不支持BEGIN 和 END
    (3)存储过程是不能修改的,非要修改,只能删除了,重新建
    
    2、存储过程总结
    一、创建
    
    (1)语法
    CREATE PROCEDURE 存储过程的名称(【IN/OUT/INOUT】 参数名 参数类型)
    BEGIN
        主体
    END
    
    (2)类似于java的方法
    修饰符 返回类型 方法名(参数列表){
        方法体
    }
    
    (3)参数对应的in、out、inout的意思
    IN 代表该参数 作为输入(传统意义的参数)
    OUT 代表该参数 作为输出 (传统意义的返回值)
    INOUT 代表该参数既可以作为输入又可以作为输出 (参数+返回)
    支持:多个IN、多个OUT、多个INOUT
    支持:无参
    
    (4)主体
    增删改查语句都可以、变量、循环、条件等
    每条SQL语句结尾分号
    DELIMITER 结束符
    默认结束符:分号,假如不想分号结尾,则可以自己设置
    
    二、调用存储过程
    
    (1)调用无参的存储过程 
        CALL 存储过程名()
    
    (2)调用in类型参数的存储过程
        CALL 存储过程名(常量值)
    
    (3)调用out类型参数的存储过程
        call 存储过程名(@变量名) $$
        select @变量名  $$
    
    (4)调用inout类型参数的存储过程
        set @变量名=值 $$
        CALL 存储过程名(@变量名) $$
        SELECT @变量名 $$
    
    三、用户变量:
        定义语法: set @变量名 ;
        赋值语法:
            (1)方式一:普通赋值
            set @变量名:=值;或set @变量名=值;
            select @变量名:=值;
    
            (2)方式二:通过查询结果为变量赋值
            select 字段|表达式 into 变量名
            from 表名 【where 条件】      
    
    3、创建无参的存储过程

    案例:创建存储过程,实现 查询beauty表的大于3号id的记录

    DELIMITER $$
    CREATE PROCEDURE mypro1()
    BEGIN
        SELECT * FROM beauty WHERE id>3;
    END $$
    
    4、创建in类型参数的存储过程

    案例:根据女神名称,查询男神信息

    CREATE PROCEDURE mypro2(IN bname VARCHAR(20))
    BEGIN
        SELECT bo.* FROM boys bo
        JOIN beauty b ON bo.id=b.boyfriend_id
        WHERE b.name=bname;
    END $$
    
    5、创建多个in类型参数的存储过程
    CREATE PROCEDURE mypro3(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
    BEGIN
        SELECT COUNT(*) FROM admin 
        WHERE admin.username=username AND admin.password=PASSWORD;
    END $$
    
    6、创建out类型参数的存储过程
    CREATE PROCEDURE mypro4(
        IN username VARCHAR(20),
        IN PASSWORD VARCHAR(20),
        OUT result INT)
    BEGIN
        SELECT COUNT(*) INTO result FROM admin 
        WHERE admin.username=username AND admin.password=PASSWORD;
    END $$
    

    调用存储过程

    SELECT @a $$
    CALL mypro4('','',@a) $$
    
    7、创建out类型参数的存储过程
    CREATE PROCEDURE mypro5(IN a INT,IN b INT,OUT c INT,OUT d INT)
    BEGIN
        SET c=a*2;
        SET d=b*2;
    END $$
    

    调用存储过程

    CALL mypro5('','',@a,@b) $$
    SELECT @a $$
    
    8、创建inout类型参数的存储过程
    CREATE PROCEDURE mypro6(INOUT age INT)
    BEGIN
        SET age=age*3;
    END $$
    
    9、删除存储过程

    语法

    DROP PROCEDURE 存储过程名
    

    案例实操

    DELIMITER ;
    DROP PROCEDURE mypro6 ;
    
    10、查看某个存储过程

    语法

    SHOW CREATE PROCEDURE 存储过程名
    

    案例实操

    SHOW CREATE PROCEDURE mypro1;
    

    相关文章

      网友评论

          本文标题:黑猴子的家:mysql 存储过程案例练习

          本文链接:https://www.haomeiwen.com/subject/wlfhuqtx.html