触发器
触发器是一种特殊的存储过程,发生DML操作时自动执行的操作,例如日志的记录:
添加、查看与删除
语法:
create trigger + 触发器名
< before | after> 定义触发时机
<insert | delete | update> 定义DML操作类型
on <tb_name>
for each row
begin
end;
例子:
create trigger tri_text
after insert on students
for each row
insert into stulogs(time,log_text) value(now(),concat('添加',NEW.stu_num,'学生信息'));
show triggers;
drop trigger +触发器名;
NEW
update、insert中NEW表示更新、插入后的数据
OLD
update、delete中OLD表示更新、删除前的数据
触发器使用总结
优点
- 触发器是?动执?的,当对触发器相关的表执?响应的DML操作时?即执?;
- 触发器可以实现表中的数据的级联操作(关联操作),有利于保证数据的完整性;
- 触发器可以对DML操作的数据进?更为复杂的合法性校验
缺点
- 使?触发器实现的业务逻辑如果出现问题将难以定位,后期维护困难;
- ?量使?触发器容易导致代码结构杂乱,增加了程序的复杂性;
- 当触发器操作的数据量?较?时,执?效率会??降低。
建议
- 在互联?项?中,应避免适应触发器;
- 对于并发量不?的项?可以选择使?存储过程,但是在互联?引?中不提倡使?存储过
程(原因:存储过程时将实现业务的逻辑交给数据库处理,?则增减了数据库的负载, ?则不利于数据库的迁移)
视图
视图的概念
视图,就是 由数据库中?张表或者多张表根据特定的条件查询出得数据构造成得 虚拟表
视图的作用
- 安全性:如果我们直接将数据表授权给?户操作,那么?户可以CRUD数据表中所有数
据,加?我们想要对数据表中的部分数据进?保护,可以将公开的数据?成视图,授权 ?户访问视图;?户通过查询视图可以获取数据表中公开的数据,从?达到将数据表中 的部分数据对?户隐藏。 - 简单性:如果我们需要查询的数据来源于多张数据表,可以使?多表连接查询来实现;
我们通过视图将这些连表查询的结果对?户开放,?户则可以直接通过查询视图获取多 表数据,操作更便捷。
创建视图
语法:
create view <view_name>
AS
select查询语句
视图数据特性
查询操作:如果在数据表中添加了新的数据,?且这个数据满?创建视图时查询语句的条 件,通过查询视图也可以查询出新增的数据;当删除原表中满?查询条件的数据时,也会从 视图中删除。 新增数据:如果在视图中添加数据,数据会被添加到原数据表 删除数据:如果从视图删除数据,数据也将从原表中删除 修改操作:如果通过修改数据,则也将修改原数据表中的数据 视图的使?建议 : 对复杂查询简化操作,并且不会对数据进?修改的情况下可以使?视图。
查询视图结构
desc + 视图名;
修改视图
方式一:
create or replace view + 视图名 AS + 搜索语句;
方式二:
alter view + 视图名 AS + 搜索语句;
删除视图
drop view + 视图名;
不同于删除视图数据,删除整个视图时,不会删除表中数据。
|