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

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 存储过程案例练习)