Mysql系列_基础_08_Mysql视图和触发器

视图

简介

实质
视图是已经编译好的sql语句,没有实际的物理记录,视图也是表,虚拟表。

分类
①MERGE:将视图的sql语句和引用视图的sql语句合并在一起,最后一起执行,当引用视图时,引用视图的语句与定义视图的语句合并,在一些情况下可以通过视图对基表数据进行更新、删除操作,视图不可更新情况有如下几点:

  • 字段来自表达自或常数,不能insert和update,但可以delete
  • 字段来自集函数
  • 视图含有group by或者distinct
  • 视图含嵌套查询,同时内层查询语句与外层查询语句使用同样的基表,如select * from stu where age in (select age from stu);

②TEMPTABLE:将视图的结果集存放在临时表中,每次执行时从临时表中操作,当引用视图时,根据视图的创建语句建立一个临时表(这个过程会影响效率),不可通过视图对基表数据进行更新、删除操作,每次查询时会根据生成的临时表再进行一次全表查询(这里的表指生成的临时表)

优点
①简化业务查询语句
②通过对外提供视图,从而隐藏基表,进行权限控制
③分表查询

操作命令

创建视图
格式:create [algorithm=算法] view v_name as select 语句
algorithm = merge/temptable/undifined

删除视图
格式:drop view v_name;

修改视图
格式:alter view v_name as select 语句;

触发器

简介

实质
监视某个表的触发条件操作(Insert、Update、Delete等),控制控制某段代码的触发

触发器四要素
①监视地点:table
②监听事件:insert/update/delete
③触发时间:after/before
④触发事件:insert/update/delete

操作命令

创建触发器
格式:create trigger tg_name after/before insert/update/delete on table
for each row ####这句话在MySQL中是固定的
begin
sql语句;
end$
注意:新插入的行用new来表示,行中的每一列的值用“new.列名”

删除触发器
格式:drop trigger tg_name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值