MySQL数据库(五)--视图,触发器,事务操作

一、视图

当查询的复杂度很高时,指多字段,多关系查询,会导致sql语句混乱。

定义:这时,就可以将sql语句存到视图当中,它是一个虚拟的表,有字段和数据,只存放查询语句,基于源表。

特点

1.简单:视图构建了一个虚拟的表,表里的数据是来源于复杂的查询语句,我们将复杂的查询语句存入视图,使用时直接调用视图。

2.安全:数据库有对库和表的权限管理,但是没有对字段的,可以通过视图来实现对字段的权限管理。

3.数据独立性:源表结构发生变化时,视图不会受到影响;但修改视图,会影响源表。

1.使用视图时,一半存放的都是复杂的查询。但如果存入的是简单查询,会被作为复杂查询去执行,会降低查询效率。

2.会增加数据库的维护和管理成本,会对数据迁移造成很大影响。

!!!注意:视图可以作为查询条件使用,但不推荐。

创建视图

格式:create view 视图名 as (查询语句);
在这里插入图片描述
在这里插入图片描述

查看视图

格式:show table status where comment=‘view’;
在这里插入图片描述
在这里插入图片描述

使用视图

格式:select * from 视图名;
在这里插入图片描述

删除视图

格式:drop view 视图名;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、触发器Trigger

触发器的内部也是sql语句。

由谁触发

触发触发器是一个特殊的存储过程。

什么时候会触发

当我们在做添加,删除,修改操作时会自动触发触发器。

创建触发器

在正式创建前,需要先修改sql语句的默认结束符,这里修改为了||。

格式
create trigger
触发器名 触发时机 触发事件
on 表名 for each row
begin
触发器要执行的sql语句;
end||

触发时机:after、before

触发事件:insert、update、delete

使用触发器

执行触发事件。

查看触发器

格式:select * from information_schema.triggers;
在这里插入图片描述
在这里插入图片描述

删除触发器

格式:drop trigger 触发器名;
在这里插入图片描述

例题1:给user表创建一个触发器,当向user表中添加数据时,给userinfo也添加一条数据。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例题2:数据备份,当我们删除user表中的数据时,将删除的数据备份到back_user表中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、事务(针对数据)

基本操作

begin:开启一个事务
commit:提交一个事务
rollback:回滚

!!注意:在事务中进行的增删改操作,不提交在外部无变化。

在这里插入图片描述
提交后,外部就有变化了
在这里插入图片描述

rollback

在这里插入图片描述

若一个事务正在进行,还没有提交或回滚,那么另一个事务的操作将会被阻塞。

在这里插入图片描述
事务提交后,另一个事务就可以执行了。
在这里插入图片描述
在这里插入图片描述
但根据结果发现,后来的事务对这条数据的修改操作并没有生效,这是为什么呢?

因为第一个事务提交了,已经将这条数据的name字段值改为了“吕哈哈”,所以另一个事务再修改数据的时候并没有找到可以匹配where条件的数据。

这里要特别注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值