数据库视图和触发器
程序员文章站
2022-06-03 23:31:59
...
4.视图:
是一个虚拟的表 有行有列有数据 视图中存的 查询语句
视图中的数据依赖于原数据
当查询的复杂度较大时,多字段,多关系,会导致查询混乱,不利于sql的编写和可读性
会影响sql的拼接,视图就是对查询结果进行记录,视图中只存放语句,不存放结果,类似虚拟的表
优点:
1.简单,视图构建了虚拟逻辑表,这个表的数据来源执行的查询,查询可以来源于多个表,在使用的时候直接使用虚拟表,代替复杂的查询
2.安全,数据库有权限设置,但是没有行和列的权限,所以对于同一个表中完整的数据是否展示就是问题
3.数据独立 相当于在原表的基础上加上一列
缺点:
视图会降低查询效率 特别是嵌套视图
创建视图:
create view view_name as (select * from user);
使用视图 select * from 视图名
查看视图 show table status where comment='view'
删除视图 drop view 视图名
5.触发器:trigger
触发器,也叫触发程序,是和表有关的命令数据对象,触发器不需要语句调用,也不需要手动启动,他由事件触发,事件包括 insert update 和delete 语句,当指定表发生指定动作,将**触发器
创建触发器
create trigger t_name
after insert on 表名 for each row
begin
sql语句
end;
# create trigger t_name 创建触发器名字是t_name
# after 触发的时机
# 事件 insert update delete
# begin 开始
# end 结束
# old 只能在删除事件中使用
1.修改mysql默认的结束符
\d $
2.创建触发器 当user表中删除一条数据时 将删除的的数据备份到user_bak -- 逻辑删除
create trigger t_name
before delete on user for each row
begin
insert into user_bak(id,name) values(old.id,old.name);
end;
$
3.将默认的结束符改回来
\d ;
查看触发器 select * from information_schema.triggers;
删除触发器 drop trigger t_name
推荐阅读