目录
一. 事务
1.1 概念
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
1.2 数据库引擎
* 概念:在mysql中的数据用各种不同的技术存储在文件(或内存)中
* 操作:
* show engines: 查看mysql支持的存储引擎
1.3 MyISAM 与 InnoDB 区别
1.4 事务的ACID特征
* 原子性(Atomicity):是不可分割的最小操作单位,要么同时成功,要么同时失败
* 一致性(Consistency):保证数据的状态操作前和操作后保持一致
* 隔离性(Isolation):多个事务同时操作相同数据库的同一个数据时,一个事务的执行 不受另外一个事务的干扰
* 持久性(Durability):当事务提交或回滚后,数据库会持久化的保存数据
1.5 事务操作步骤
1. 开启事务
2. 编写事务逻辑操作单元
3. 提交事务或回滚事务
1.6 事务分类
* 隐式事务:没有明显的开启和结束事务的标志
* insert、update、delete语句本身就是一个事务
* 显式事务:具有明显的开启和结束事务的标志
1. 取消自动提交事务:set autocommit=0;
2. 开启事务:start transaction;
3. 提交或回滚事务:
- commit;
- rollback;
1.7 事务的隔离级别
* 事务并发问题是如何产生的?
- 当多个事务同时操作同一个数据库的相同数据时
* 事务并发问题
- 脏读:一个事务读取到了另外一个事务未提交的数据
- 不可重复读:同一个事务中,多次读取到的数据不一致
- 幻读:一个事务读取数据时,另外一个事务进行更新,导致第一个事务读取到了没有 更新的数据
* 处理事务并发问题,设置事务隔离级别
- READ UNCOMMITTED
- READ COMMITTED:可以避免脏读
- REPEATABLE READ:可以避免脏读、不可重复读和一部分幻读
- SERIALIZABLE:可以避免脏读、不可重复读和幻读
* 注意:隔离级别从小到大安全性越来越高,但是效率越来越低
* 设置隔离级别
- set session|global transaction isolation level 隔离级别名;
* 查看隔离级别
- select @@tx_isolation;
二. 视图
2.1 含义
一张虚拟的表
2.2 好处
sql语句提高重用性,效率高
和表实现了分离,提高了安全性
2.3 视图操作
2.3.1 视图创建
语法
CREATE VIEW 视图名
AS 查询语句;
示例
CREATE VIEW myview as select * from user;