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;