第十章 存储过程和触发器

第十章  存储过程和触发器
1.了解存储过程和函数的相关概念
答:存储过程可以简单理解为一组经过编译并保存在数据库中sql语句的集合,可以随时被调用。
函数和存储过程的区别:
    存储过程可以有返回值也可以没有返回值,函数必须有返回值。
    存储过程的实现比较复杂,而函数的实现比较有针对性
    存储过程可以输入输出参数,而函数只可以输入参数
    过程允许在其中选择以及dml语句,而函数只可以在其中放入select语句。
    可以在存储过程中调用函数,不可以在函数中调用存储过程。

2.掌握创建并调用存储过程和函数的方法
    delimiter $$
    create procedure proc(out num int)
    begin
    select count(*) into num from xsjbxxb;
    end $$
    delimiter ;
        调用: call procdure_name(参数);
        区别函数的调用:select 函数名(参数);

3.掌握变量,条件和处理程序,游标的使用
           a.定义游标
    declare cursor_name cursor for select_statement;
           b.打开游标
    open cursor_name;
           c.使用游标
    fetch cursor_name into var_name [ ,var_name ];
            d.关闭游标
    close cursor_name;
在存储过程和函数中,当查询语句返回多条记录时,可以使用游标对结果集进行逐条读取。

4.掌握查看,修改及删除存储过程和函数的方法
        a.查看存储过程:
              show procedure | function status 【like ‘pf_name’】;
                    eg:show procedure status like'proc';
        b.查看存储过程定义
              show create procedure | function pf_name;
                    eg:show create procedure jwgl.proc;
        c.查看存储过程的信息
              select * from information_schema.routines
              where routine_name='pf_name';
                      eg:select * from information_schema.routines where routine_name='proc' and 
                           routine_type='procedure';             
         d.修改存储过程(只能修改特性,不能修改sql语句集合)
               alter procedure proc modifies sql data sql security invoker;
          e.删除存储过程
               drop procedure pf_name;

5.了解什么是触发器
答:触发器时MySQL数据库对象之一,与存储过程类似,它也是一段程序代码,不同的是,触发器是由某个事件激发某个操作的。

6.掌握创建触发器的方法
答:触发器种类:insert 触发器(可用new表),update 触发器(可用new,old表),delete 触发器(可用old表)。
       创建触发器:
              create trigger <触发器名> <before | alter> <insert | update | delete> on <表名> 
              for each row <触发器主体>;
                        eg:create trigger sumofsalary
                        before insert on tb_em8
                        for each row
                       set @sum=@sum+NEW.salary; 
7.掌握查看触发器的方法
           a.查看一个或多个触发器
                    show triggers;
           b.查看某个表上的触发器
                    show triggers from db_name like 'table_name';
           c.查看某一个触发器
                    show triggers where 'trigger' like 'trigger_name';
            d.查看触发器详细信息
                   select * from information_schema.triggers where trigger_name='tri_name';
8.掌握使用触发器的方法
9.掌握删除触发器的方法
                    drop trigger db_name.trigger_name;

补充:事件
1.概述
    MySQL事件是指按调度表运行的任务,这些事件可以称为“调度事件”。
           打开事件步骤
                 查看:show variables like 'event_scheduler';
                  打开:set global event_scheduler=on;
                             set @@global.event_scheduler=on;
2.创建事件案例
    drop event
    If exists 'event_minute';
    delimiter $$
    create definer='root' @'localhost' event 'event_minute' on schedule every 1 minute
    start '2020-02-10 13:40:00' on completion not preserve enable do
    begin
    insert into tb_emp8
    values(3,'c',1000);
    insert into tb_emp8
    values(4,'D',1000);
    END $$
3.查看事件
    show events;
4.删除事件
    drop event [if exists] event_name;
5.禁用事件
    alter event event_name dsiable;
6.开启事件
    alter event event_name enable;
7.修改事件和创建事件格式相同。
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ee .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值