MySQL 存储程序

mysql 存储程序

在这里插入图片描述

①什么是存储程序

存储程序原理: 将程序像数据一样存储到计算机内部存储器中的一种设计原理
解释: 存储程序是一种批处理的形式, 本质上封装了一些可执行的SQL语句和一些特殊的控制结构,
然后给用户提供一种简单的调用方式来执行这些语句

②存储程序分类

存放在MySQL服务器端,供重复调用的对象叫做存储程序, 分为以下四种:

  1. 存储过程

    封装很多 SQL 语句完成某种特定功能, 以便外部程序调用的一种数据库对象

    优点: 存储过程可以封装,隐藏复杂代码逻辑;
    缺点: 通常定制化于特定的数据库上,切换数据库时需要修改;
    -------------------------------------------------------------------------
    创建:
    CREATE PROCEDURE 存储过程名称(  参数的种类1 参数1 数据类型1
                                [,参数的种类2 参数2 数据类型2])
                                BEGIN
                                    处理内容
                                END
    执行:
    CALL 存储过程名称(参数,....)
    删除:
    DROP PROCEDURE [IF EXISTS] 存储过程名称;
    查看:
    SHOW PROCEDURE STATUS 
    SHOW CREATE PROCEDURE 存储过程名;
    
  2. 存储函数

    相当于自定义 MySQL 函数

    创建:
    CREATE FUNCTION 函数名([参数类型 数据类型[,.]]) RETURNS 返回类型 
      BEGIN
         SQL语句.....
        RETURN (返回的数据)
      END
    删除:
    DROP FUNCTION [IF EXISTS] 函数名; 
    调用:
    select 函数名(参数);
    
  3. 触发器

    当与表相关联的事件发生时,就会执行或触发SQL触发器,例如插入,更新或删除

    trigger_time: { BEFORE | AFTER }		触发时间
    trigger_event: { INSERT | UPDATE | DELETE }		触发事件
    当自定义事件触发时,自动执行
    创建:
    	CREATE TRIGGER trigger_name trigger_time
        trigger_event ON tbl_name
        FOR EACH ROW		对于行锁定,行级操作触发
    	BEGIN
    		触发器触发后所要执行的操作
        END
    查看:
    SHOW TRIGGERS [FROM schema_name];
    删除:
    DROP TRIGGER 触发器名称
    
  4. 事件

    根据时间表在预定时间自己执行

    比如,可以自己定一个开始时间点,然后让它每隔指定的时间段重复做某些事情

② 存储过程与存储函数区别

大佬总结的就是清楚 https://www.cnblogs.com/youxin/p/3568379.html

整理如下:

存储过程存储函数
实现功能复杂实现功能针对性强
可执行数据库操作(修改表等一系列操作)不能执行修改全局数据库状态操作
可以返回参数,如记录集只能返回值或者表对象
可以返回多个变量只能返回一个变量
参数类型包括: IN OUT INOUT 三种参数类型只有 IN 类型
声明时不需要返回类型声明需要返回类型, 且函数体必须包含return语句
可以使用非确定函数不可以使用非确定函数
作为独立部分来执行, call调用作为查询语句的一部分来调用, select调用
SQL语句中不可以使用函数可以返回一个表对象, 可以放在from关键字后面

追加:
确定函数与非确定函数
定义: http://www.cftea.com/c/2007/08/H8C9JLYQLFSGVB6B.asp
能力有限, 看不太懂
自己理解:
select sysdate( ) 获取当前系统时间,每次调用返回值不同,这类就是非确定函数
而确定性函数用关键词Deterministic标识,并且函数的返回值完全由输入参数决定,
例如:对固定的数据进行求和操作,返回的值是不会变的,这类就是确定函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值