MySQL学习日记24——存储过程和函数

一、存储过程和函数

  1. 简介:类似于 java 中的方法

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

二、存储过程

  1. 含义:一组预先编译好的SQL语句的集合,理解成批处理语句

  2. 好处:
    (1) 提高代码的重用性
    (2) 简化操作
    (3) 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

2.1 创建

  1. 语法:
CREATE PROCEDURE 存储过程名 (参数列表)
BEGIN
	存储过程体 ( 一组合法的 SQL 语句 )
END
  1. 注意:
    (1) 参数列表包含三部分:
    参数模式 参数名 参数类型
    IN stuname VARCHAR(20)

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

(2) 如果存储过程体仅仅只有一句话,BEGIN END 可以省略

(3) 存储过程体中的每条SQL语句的结尾要求必须加分号。

(4) 存储过程的结尾可以使用 DELIMITER 重新设置
语法:
DELIMITER 结束标记
案例:
DELIMITER $

2.2 调用

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

2.3 案例

  1. 空参列表
    **案例1:**插入到 account 表中五条记录
# 创建存储过程
DELIMITER $
CREATE PROCEDURE mypl()
BEGIN 
	INSERT INTO account(username, balance) VALUE('Join', 2000),('lily',1000),('Tom',800),('小明',1600),('小兰',700);
END $

MySQL学习日记24——存储过程和函数_第1张图片

# 调用存储过程
CALL mypl();

MySQL学习日记24——存储过程和函数_第2张图片

  1. 创建带 IN 模式参数的存储过程
    案例1:创建存储过程实现根据专业名,查询对应的学生信息 MySQL学习日记24——存储过程和函数_第3张图片
    **案例2:**创建存储过程,用户是否登录成功
    MySQL学习日记24——存储过程和函数_第4张图片

  2. 创建带 OUT 模式参数的存储过程
    案例1:根据女神名,返回对应的男神名
    MySQL学习日记24——存储过程和函数_第5张图片
    案例2:根据女神名,返回对应的男神名和男神魅力值 在这里插入图片描述

  3. 创建带inout模式参数的存储过程
    案例1:传入 a 和 b 两个值,最终 a 和 b 都翻倍并返回
    MySQL学习日记24——存储过程和函数_第6张图片

2.4 删除

  1. 语法:drop procedure 存储过程名

2.5 查看

SHOW CREATE PROCEDURE 存储过程名;

三、函数

  1. 好处:
    (1) 提高代码的重用性
    (2) 简化操作
    (3) 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

  2. 区别:
    存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新
    函数:有且只有1个返回,适合做处理数据后返回一个结果

1. 创建函数

  1. 语句:
    CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
    BEGIN
    函数体
    END

  2. 注意:
    参数列表 包含两部分:
    参数名 参数类型

  3. 函数体:
    肯定会有 return 语句,如果没有会报错
    如果 return 语句没有放在函数体的最后也不报错,但不建议
    RETURN 值;

  4. 函数体中仅有一句话,则可以省略 begin end

  5. 使用 delimiter 语句设置结束标记
    DELIMITER $;

2. 调用

  1. 语句:
    SELECT 函数名(参数列表)

3. 案例

  1. 无参数有返回值
    案例1:返回专业的个数
    MySQL学习日记24——存储过程和函数_第7张图片
    1. 有参返回
      案例1:根据学生姓名,返回他的编号
      MySQL学习日记24——存储过程和函数_第8张图片
      案例2:根据部门名,返回该部门的平均工资
      MySQL学习日记24——存储过程和函数_第9张图片

4. 查看函数

  1. 语法:
    SHOW CREATE FUNCTION myf3

5. 删除函数

  1. 语法:
    DROP FUNCTION myf3;

你可能感兴趣的:(MySQL学习日记,mysql)