十二:事务与视图
1.事物的属性:ACID
A:原子性,相当于捆绑,把一批操作,当成一个操作,要么一起成功,要么一起失败
C:一致性,例如转账,最后的总额是不变的
I: 隔离性,一个事务的执行不受其他事务的干扰
D: 持久性,一旦提交就是永久性改变,直接改变数据库的数据
2.事物的使用
1.隐式(自动)事务:没有明显的开启和结束,本身就是一条事务可以自动提交,比如insert update delete
2.显示事务:具有明显的开启和结束
使用显示事务:
1.开启事务
set autocommit=0;
start trabsaction;#可以省略
SQL语句....
2.0 设置回滚点
savepoint 回滚点名;
2.结束事务
提交 :commit;
回滚: rollback
回滚到指定地方:rollback to 回滚点名;
3.并发事务
1.事务的并发问题是如何发生的?
多个事务同时操作同一个数据库的相同数据时
2.并发问题类型
1.脏读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务更新的数据
2.不可重复读: 一次事务多次读取,结果不一样
3.幻读:一个事务读取了其他事务还没有提交的数据,只是读到的是其他事务 ”插入“ 的数据
3.解决并发问题
通过设置隔离级别
4.隔离级别
read uncommitted;读未提交 三种问题都会发生
read committed;读提交 脏读会被隔离
repeattable read;可重复读 脏读和可重复读被解决(mysql默认)
serialirable:串行化 都解决,但是效率低
二、视图
1.含义,mysql5.1版本出现的新特性,本省是一个虚拟表,他的数据来自于表,通过执行时动态生成
好处:简化sql语句,提高了sql的重用性、保护基表的数据提高了安全性
2.创建
create view 视图名
as
SQL语句
3.修改
方式一:create or replace view 视图名
as
SQL查询语句
4.删除
drop view 视图名1,视图名2.....;
5.查看
desc 视图名;
show create view 视图名;
6.使用
注意视图一般用于查询而不是用于更新,所以一下特点的视图都不允许更新
7.视图和表的对比
视图 占用物理内存小只保留sql逻辑 一般用于查询
表 保存实际的数据 增删改查