MySQL数据库——存储过程和函数

存储过程

#存储过程和函数
类似于Java中的方法。
好处:提高重用性、简化操作

#存储过程:
含义:一组预先定义好的SQL语句的集合,理解成批处理语句
好处:提高重用性、简化操作、减少编译次数,减少和数据库服务器的连接过程,提高了效率

#一、创建语法
    CREATE PROCEDURE 存储过程名(参数列表)
    BEGIN
        存储过程体(一组合法的SQL语句)
    END
    
    备注:参数列表有三部分
        参数模式  参数名  参数类型
        IN strname VARCHAR(20)
    参数模式:
        IN:该参数可以作为输入,也就是说该参数需要调用方传入值
        OUT:该参数可以作为输出,也就是说该参数可以作为返回值
        INOUT:该参数就可以作为输入,也可以作为输出,也就是既需要传入值,又可以返回值
    如果存储过程体只要一句话,BEGIN END 可以省略
    存储过程体的每条SQL语句的结尾必须加分号,
    存储过程的结尾用DELIMITER重新设置
    语法:
    DELIMITER 结束标记
    
#二、使用语法

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

#1.空参列表
#案例:插入admin表中五条记录

SELECT * FROM admin;

DELIMITER $
CREATE PROCEDURE mypl()
BEGIN
    INSERT INTO admin(username,'password')
    VALUES('john','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000')
END $

#调用
CALL mypl()$

#2.in模式参数存储过程
#案例1:创建存储过程实现,根据女神名,查询对应的男神信息
CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
BEGIN
    SELECT bo.* FROM boys bo
    RIGHT JOIN beauty b ON bo.id = b.boyfriend_id
    WHERE b.name = beautyName
END $


#二、存储过程的删除
语法:
    DROP PROCEDURE 存储过程名

#三、存储过程的查看
SHOW CREATE PROCEDURE myp2;

 函数

#函数
含义跟存储过程一样

区别:
    
存储过程:可以有0个返回,也可以有多个返回
函数:有且近有1个返回!

存储过程适合做成批量插入、更新
函数更适合做处理数据后返回一个结果

#创建
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
    函数体
END
注意:参数列表包含两部分:
            参数名
            参数类型
函数体:肯定会有RETURN语句,没有会报错
如果RETURN语句没有放在函数体的最后,也不会报错,但不建议

RETURN 值;

函数体中只要一句话时,BEGIN END可以省略
使用DELIMITER语句设置结束标记

二、调用语法
SELECT 函数名(参数)
#执行函数中所有的语句

#案例演示
无参数有参数
#返回公司员工个数
CREATE FUNCTION myf1() RETURNS INT
BEGIN
    DECLARE c INT DEFAULT 0;
    SELECT COUNT(*) INTO c
    FROM employees;
    RETURN c;
END $

SELECT myf1() $

三、查看函数
SHOW CREATE FUNCTION myf1

四、删除函数
DROP FUNCTION myf1;

 

posted @ 2021-02-22 13:13  不妨不妨,来日方长  阅读(78)  评论(0编辑  收藏  举报