MySQL 数据库_04触发器和存储课程

(0)摘要

# 课程内容

(1)存储过程

(2)触发器


# HQU

# 最近比较忙,所以笔记均为每日更新。且这两个内容是进阶内容,前面的知识已经足够大家完成作业。当然,如果对这块有疑问的,可以私信问我。

(1)存储过程_基础知识

# (1)存储过程

                1)基础概念。以往我们如果想要操作数据库中的某个表数据,就必须写一些 sql 语句(就是前面说的 DQL 等),但是每次查都要写一堆,显然是不合适的。那么数据库也基于程序设计的思想,把这些语句封装,以后我们想要执行某些操作的时候,就可以直接调用相应的函数(存储过程)即可,其实下面的图就是这句话总结了。还是要多写多体会,这种东西本质是简单的,学个入门,以后工作的时候现学现查即可。关键是课本理论,这也是网络培训班绝对不会讲。

               

                假设当前操作数据库下,有如下的一张表

                2)创建存储过程的语法

                实践一下,可以看见我们就创建好了一叫做 p1 的存储过程,为了方便我以后就说函数了。

                 那么如何调用呢?使用 call 函数名称的方法就可以调用了。即下图所示:

                3)创建存储过程的语法

        

                实践一下_查看存储过程的状态信息

                实践_查看存储过程的定义

                

                 实践_删除存储过程。交给你们自己尝试了。

~~~


# 【注意】如果在命令行创建存储过程会报错,这是因为结束符的问题,下面是解决方法,就是重新定义结束符号。基本语法是 delimiter #; 就是说遇到 # 就是结束符,比如 select * from users; 那么我们执行该语法后,结束符就不能用分号 ; 了,就应该是 .... users # 才对。那么就交给大家去验证了。  

(2)存储过程_系统变量

# (1)系统变量

                1)基础概念。全局变量和会话变量,你就理解为全局变量是所有的查询都可以用,局部变量就是只有一个查询能用。比如 navicat 我们创建了几个查询(这个讲过的),那么全局变量就在这些查询都可以使用,但是对于会话变量,只能是一个查询能用(就是他自己的会话下)。不理解的看看下面

                 

                实践一下

               

                模糊匹配的用法

               

                准确匹配

                实践_设置系统变量

               


#  我们设置了系统变量,当重启服务器后,会自动复位。如果我们想要永久的修改,就需要修改数据库的配置文件。建议不要手贱,等你特别厉害了再去改。

(3)存储过程_用户自定义变量

# (1)用户自定义变量

                1)基础概念

                实践一下

                查看自定义的变量

                高级点的赋值

#

(4)存储过程_局部变量

# (1)局部变量

                1)基础概念。看概念就知道,其实局部变量就是声明在存储过程内部的,注意是在 begin 和 end 里面,相当于一个函数体内。

                2)实战一下

#

(5)存储过程_if 语句

# (1)if 语句

                1)基础概念和例子

  

                实践一下


# 存储过程进阶用法将在后续章节更新

(6)触发器

# (1)触发器

                1)基础概念。行级触发器,就是操作了几行,就执行几次触发器。触发器也可以理解为函数,有点回调(析构?)的味道?其实你就这么理解,mysql 的开发者,根据你操作的几行,就执行了几次循环(coding 多了就知道了,不用纠结)。

                2)new 和 old 就是,new 是更改之后的数据,old 是更改之前的数据。

                3)创建触发器

                实践一下

                创建触发器,创建成功后,我们可以使用 show triggers; 来查看当前数据库中有啥触发器。【注意,我有个字段名打错了哦~~~自己 debug 一下啊】

                 

                那么我们执行一下插入操作,可以看到相应的 user_logs 表也插入的数据,显然插入的触发器是被调用了。                


                4)前面讲的是插入类型的触发器,那么我们现在来整一个修改类型的触发器。

 

                实践一下,格式可以自己调一下的。

 

                5)至于删除类型的触发器就交给大家自己实践了。其实是一模一样的。只要注意删除只有 old 值就行。


#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值