学校网站设计理念,可信赖的企业网站开发,html网站开发图片素材,wordpress 关闭自动升级今天我们主要来快速学习视图#xff0c;存储过程#xff0c;触发器四个方面的内容#xff0c;一起加油学习吧#xff0c;还有半年就有秋招了#xff0c;要加快速度了#xff0c;迫在眉睫#xff0c;冲吧#xff0c;兄弟们。
目录
1、视图 2、存储过程 3、存储函数 4、…今天我们主要来快速学习视图存储过程触发器四个方面的内容一起加油学习吧还有半年就有秋招了要加快速度了迫在眉睫冲吧兄弟们。
目录
1、视图 2、存储过程 3、存储函数 4、触发器
5、小结 1、视图
视图是虚拟的表并不保存数据只保存相应的SQL逻辑不保存查询结果。 下面看一下视图的几种基本操作分别为创建视图查询视图修改视图删除视图。 视图检查选项cascaded,在创建视图的时候可以对视图添加检测选项当对视图执行插入等操作会进行检查不满足要求的禁止插入视图防止视图失效。通过cascaded选项可以进行检查。 视图的更新要保证视图中的行与基本表中的行是一一对应关系否则是不允许更新的。也不允许插入。如果使用了聚合函数分组去重等关键字。 下面看一下视图的主要作用首先就是使用简单可以把经常使用的复杂操作定义为视图用户不必为后面的每次操作都指定条件还有就是安全数据库授权是到特定的表而通过视图可以授权到相应的行和列。数据独立可以根据基础的变化进行修改。 2、存储过程
存储过程存在数据库中SQL语句的集合减少数据在数据库和服务器之间的传输提高处理性能就是对SQL语句的封装和重用。
存储过程特点实现了SQL的封装和复用可以传参和返回数据减少数据传输提升性能。 下面看一下存储过程的创建和调用存储过程的创建和调用如下
下面看一下存储过程的查看和删除查看存储过程有两种方式第一种是查看数据的所有存储过程查询某个存储过程的定义如下 注意在创建存储过程的SQL时需要通过delimeter指定SQL语句的结束符。
我们在看一下数据库存储过程中涉及的变量比如系统变量MySQL服务器提供的分为全局变量和会话变量。可以查看系统变量也可以设置系统变量。 用户自定义变量不需要声明直接用变量名使用就可以可以用set方式设置变量可以select方式查询和设置变量可以将查询结果赋值给变量。 局部变量的作用范围在begin和end之间下面创建一个存储过程定义一个局部变量将查询的结果赋值给stu_count变量名最后查询该变量通过call调用存储过程。 下面看一个if条件判断语法规则就是if 满足就thenEND IF结束if 之前存储过程都是没有传参可以通过参数进行传参和其它的编程语言的函数很像。in指定输入参数out指定输出参数inout指定既可以是输入又可以是输出的参数。 下面的传入的是score,返回的数据是result直接定义就可以用call调用即可。 下面的score既作为输出又作为输出如下所示用inout定义。 下面再看存储过程中的case语法case语法有两种基本的语法结构。本质上都是when的条件满足就执行then最后用END CASE结束。 下面用第2种语法结构去判断传入的月份属于哪一个季度具体如下 再看存储过程的循环语句while语句这个也是很基础的和其它编程语言差不多。 下面是用while实现从1累加到n的实现过程具体如下 再看第二种循环repeat满足条件退出循环和while刚好相反如下从n一直加到1循环累加。当n小于等于退出循环。 我们再看一下Loop循环使用leave退出循环iterate用来跳过当前循环直接进入下一次循环。 我们使用loop循环进行从1到n的累加具体如下需要使用leave退出循环如下 游标cursor
游标也是一个面试可能问到的内容游标是用来存储查询结果集的数据类型在存储过程和函数中可以使用游标对结果集进行循环的处理。
一般需要先声明游标存储的结果集然后打开游标并循环获取游标中的记录并执行相应的插入等操作最后关闭游标不过需要判断当游标中满足条件的记录都被取出后需要结束循环。 可以使用条件处理程序Handler定义相应的处理步骤比如游标中数据取完了后退出循环。 3、存储函数
存储函数就是有返回值的存储过程是必须有返回。其实存储函数完全可以背存储 过程替代所以用的很少。 4、触发器
触发器是和表有关的数据库对象是指在执行相应的数据操纵之前或之后触发并执行触发器中的SQL语句集合比如执行日志操作数据校验等这样可以在数据库端保证数据的完整性。
使用old和new来引用触发器中发生变化的内容与其它数据库类似。
行级触发器影响多少行触发多少次语句级触发器不管影响多少行只出发一次。现在的触发器仅支持行级触发器。
触发器语法创建触发器可以指定在执行何种操作之前或者之后触发针对那张表的触发可以查看和删除触发器。 先看一个需求要求使用触发器将tb_user表变更的日志记录到user_logs表中。 我们看一下insert触发器创建一个在tb_user表中插入数据之后执行触发器触发内容为向日志表user_logs中插入相应的字段进行记录。
c
我们看一下update触发器在更新之后进行触发并向日志表中记录插入更新之前的数据和更新之后的数据old获取更新之前的数据new获取更新之后的数据。触发器都是行级触发器影响多少行触发器就触发多少次。 我们再看一下delete触发器在delete之后进行触发记录删除前的数据并插入到日志表中。 5、小结
视图-存储过程-存储函数-触发器。