第九讲:视图、事务、触发器
1.视图(主要根据查询而生成)
①创建视图:
create view view_name as select statement;
②视图就是一个数据库中的虚拟表
③视图本身没有结构和数据,只是通过执行相应select语句获得数据
2.视图管理
①删除视图:drop view [if exists] view_name;
②修改视图:alter view v_name as select statement;
③修改视图结构:修改视图内字段名称
例:alter view v_name(v1,v2) as select id,t_name from info_teacher;
通过视图可以使复杂的业务逻辑简单地完成,通常,视图完成的逻辑都是相对来说比较基础的逻辑;
④视图的执行过程
存在两种执行算法:
ⅰ.merge:合并的执行方式
每当执行的时候,先将我们的视图的sql语句与外部查询视图的sql语句混合在一起,最终执行。
视图算法:一个视图是在什么时候执行,依据哪些方式执行;
ⅱ.temptable:临时表模式
每当查询的时候,将视图所使用select语句生成一个结果的临时表,再在当前的临时表内查询;
注:尽量使用视图完成读操作
如果使用视图,则对视图的修改就是对真实表的修改
删除视图,不会销毁实体表的的数据
若一个数据多个应用,应针对每个应用,采取不同的视图接口;
3.事务
一组sql语句操作单元,组内所有sql语句完成一个业务;
①如何处理事务
在一组操作之前,设计一个记号(备份点);
②实现:利用innodb存储引擎的事务日志功能
③常见的事务指令
成功:commit
失败:rollback
开启事务:start transaction;关闭自助提交,如果事务结束了成或败,都会将自动提交机制回到start时状态
④事务特点:原子性、一致性、隔离性、持久性
4.触发器
在某个表上进行监听,监听该表上的动作、支持的事件(增、删、改),一旦监听到就会触发一段使用sql编写的程序,由事件和事件发生时执行的动作,就组成了一个触发器;
①定义:触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象;
②创建触发器
create trigger name 事件和动作
表的事件:insert插入之前,插入之后
update更新之前,更新之后
delete删除之前,删除之后
时机(前后) before after 和事件(增、删、改);