MySQL基础篇第15章(存储过程与函数)

文章目录

  • 1、存储过程概述
    • 1.1 理解
    • 1.2 分类
  • 2、创建存储过程
    • 2.1 语法分析
    • 2.2 代码举例
  • 3、调用存储过程
    • 3.1 调用格式
    • 3.2 代码举例
    • 3.3 如何调试
  • 4、存储函数的调用
    • 4.1 语法分析
    • 4.2 调用存储函数
    • 4.3 代码举例
    • 4.4 对比存储函数和存储过程
  • 5、存储过程和函数的查看、修改、删除
    • 5.1 查看
    • 5.2 修改
    • 5.3 删除
  • 6、关于存储过程使用的争议
    • 6.1 优点
    • 6.2 缺点

MySQL从5.0版本开始支持存储过程和函数。存储过程和函数能够将复杂的SQL逻辑封装在一起,应用程序无须关注存储过程和函数内部复杂的SQL逻辑,而只需要简单地调用存储过程和函数即可。

1、存储过程概述

1.1 理解

MySQL基础篇第15章(存储过程与函数)_第1张图片

1.2 分类

MySQL基础篇第15章(存储过程与函数)_第2张图片

2、创建存储过程

2.1 语法分析

MySQL基础篇第15章(存储过程与函数)_第3张图片
MySQL基础篇第15章(存储过程与函数)_第4张图片

MySQL基础篇第15章(存储过程与函数)_第5张图片

2.2 代码举例

MySQL基础篇第15章(存储过程与函数)_第6张图片
MySQL基础篇第15章(存储过程与函数)_第7张图片
MySQL基础篇第15章(存储过程与函数)_第8张图片
MySQL基础篇第15章(存储过程与函数)_第9张图片

3、调用存储过程

3.1 调用格式

MySQL基础篇第15章(存储过程与函数)_第10张图片

3.2 代码举例

MySQL基础篇第15章(存储过程与函数)_第11张图片

MySQL基础篇第15章(存储过程与函数)_第12张图片

3.3 如何调试

MySQL基础篇第15章(存储过程与函数)_第13张图片

4、存储函数的调用

前面学习了很多函数,使用这些函数可以对数据进行的各种处理操作,极大地提高用户对数据库的管理效率。MySQL支持自定义函数,定义好之后,调用方式与调用MySQL预定义的系统函数一样。

4.1 语法分析

MySQL基础篇第15章(存储过程与函数)_第14张图片

4.2 调用存储函数

MySQL基础篇第15章(存储过程与函数)_第15张图片

4.3 代码举例

举例1:
创建存储函数,名称为email_by_name(),参数定义为空,该函数查询Abel的email,并返回,数据类型为字符串型。

DELIMITER //
CREATE FUNCTION email_by_name()
RETURNS VARCHAR(25)
DETERMINISTIC
CONTAINS SQL
BEGIN
RETURN (SELECT email FROM employees WHERE last_name = 'Abel');
END //
DELIMITER ;

调用:

SELECT email_by_name();

举例2:
创建存储函数,名称为email_by_id(),参数传入emp_id,该函数查询emp_id的email,并返回,数据类型为字符串型。

DELIMITER //
CREATE FUNCTION email_by_id(emp_id INT)
RETURNS VARCHAR(25)
DETERMINISTIC
CONTAINS SQL
BEGIN
RETURN (SELECT email FROM employees WHERE employee_id = emp_id);
END //
DELIMITER ;

调用:

SET @emp_id = 102;
SELECT email_by_id(102);

举例3:
创建存储函数count_by_id(),参数传入dept_id,该函数查询dept_id部门的员工人数,并返回,数据类型为整型。

DELIMITER //
CREATE FUNCTION count_by_id(dept_id INT)
RETURNS INT
LANGUAGE SQL
NOT DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT '查询部门平均工资'
BEGIN
RETURN (SELECT COUNT(*) FROM employees WHERE department_id = dept_id);
END //
DELIMITER ;

调用:

SET @dept_id = 50;
SELECT count_by_id(@dept_id);

MySQL基础篇第15章(存储过程与函数)_第16张图片

4.4 对比存储函数和存储过程

MySQL基础篇第15章(存储过程与函数)_第17张图片

5、存储过程和函数的查看、修改、删除

5.1 查看

MySQL基础篇第15章(存储过程与函数)_第18张图片
MySQL基础篇第15章(存储过程与函数)_第19张图片

5.2 修改

MySQL基础篇第15章(存储过程与函数)_第20张图片
MySQL基础篇第15章(存储过程与函数)_第21张图片

5.3 删除

MySQL基础篇第15章(存储过程与函数)_第22张图片

6、关于存储过程使用的争议

在这里插入图片描述

6.1 优点

MySQL基础篇第15章(存储过程与函数)_第23张图片

6.2 缺点

MySQL基础篇第15章(存储过程与函数)_第24张图片

你可能感兴趣的:(MySQL,mysql,数据库)