一、事务
1、含义:
一条或多条的sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行
2、特点(ACID)
A 原子性:一个事务时不可再分割的整体,要么都执行要么都不执行 C 一致性:一个事务可以使数据从一个一致状态切换到另外一个一致的状态 I 隔离性:一个事务不受其他事务的干扰,多个事务互相隔离 D 可持久性:一个事务一旦提交,则永久的持久化到本地
3、事务的使用步骤
了解: 隐式事务:没有明显的开启和结束,可以自动提交,比如insert update delete 显示事务:具有明显的开启和结束
使用显示事务:
- 开启事务
set autocommit=0;
start transaction;
- 编写一组逻辑sql语句(增删改)
- 设置回滚点
savepoint 回滚点名; - 结束事务
提交:commit 回滚:rollback /rollback to 回滚点名
4、并发事务
4.1. 事物的并发问题是如何产生的?
多个事务同时操作同一个数据库的相同数据时,
4.2并发问题都有那些?
- 脏读:一个事物读取了其他事务还没提交的数据,只是读到的时其他事务更新的数据
- 不可重复读:一个事务多次查询,结果不一样
- 幻读:一个事务读取了其他事务还没有提交的数据,只是读到的时其他事务插入的数据
4.3 如何解决并发问题?
- read uncommitted:读未提交
- read committed:读已提交
- repeatable read(默认):可重复读
- serializable:串行化
(从上往下隔离越来越高,性能越来越差)
二、视图
1、含义与好处
mysql 5.1版本出现的新特性,本身是一个虚拟表,数据是通过真正的表动态生成的。 好处:
- 简化sql语句
- 提高了sql的重用性
- 保护了基表的数据,提高了安全性
2、创建
create view 视图名 as 查询语句;
3、修改
- 方式一
create or replace view 视图名 as 查询语句
- 方式二
alter view 视图名 as 查询语句
4、删除
drop view 视图1,视图2
5、查看
desc 视图名
show create view 视图名
6、使用
- insert
- update
- delete
- select
注意:视图一般用于查询的,而不是用于更新的,所以具备一下特点的视图都不允许更新, 包含分组函数的、group by、distinct、having、union、join、常量视图、where后的子查询用到了from的表、用到了不可更新的视图
7、视图和表的对比
| 关键字 | 是否占用物理空间 | 用法 |
---|
视图 | view | 占用较小,只保存sql逻辑 | 一般用于查询 | 表 | table | 保存实际的数据 | 增删改查 |
|