(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 值就行。
#