MySQL数据库
第三章 事务、视图、索引
一、事务(transaction)
1、什么是数据库事务:
(1)是 SQL 操作的最小单位,是一系列逻辑 SQL 操作的集合。
(2)处于一个事务内的所有 SQL 操作是一个整体,这些 SQL 操作要么都成功,要么都失败。
(3)我们将事务提交给数据库,修改数据库数据称之为提交事务,使用 commit 来完成,
如果发出一个 DDL 操作,那么之前的事务也会被自动提交。
所谓的提交事务,就是通知数据库按照该事务最终的数据修改数据库自身的数据。
(4)如果将事务中的数据不提交给数据库,而是直接抛弃,那么就称之为回滚事务,
通过 rollback 来完成。
2、数据库事务的 ACID 原则:
(1)原子性(Atomictiy):事务所包含的所有 SQL 操作,是一个不可再分的整体,这些整体要么一起成功,也么一起失败。
(2)一致性(Consistency):事务在完成后,需要保证和数据库中的数据保持一致。
(3)隔离性(Isolation):每个事务之间的操作相互不影响。
(4)持久性(Durability):当事务提交后,数据库的数据将会被永久改变。
3、由事务所带来的问题
(1)脏读取
(2)不可重复读取
(3)幻读
对于 MySQL 来说,是默认提交事务的。事务针对的是 DML 操作。
4、事务的自动提交模式
使用SET语句来改变自动提交模式
注意:MySQL中默认是自动提交,使用事务时应先关闭自动提交。
5、MySQL的事务实现方法
6、MySQL事务处理步骤
MySQL事务处理只支持InnoDB和BDB数据表类型
二、视图(view)
1、什么是视图
视图是一种查看数据库中一个或多个表中数据的方法
视图就是将一个复杂的 SQL 进行封装,形成一个整体,当我们再次需要该 SQL 时,可以直接调用视图,那么视图就可以直接执行该 SQL 查询。
2、 创建视图的语法
create view 视图名 as select 查询语句;
3、调用视图
select * from v_emp_welfare;
三、索引(index)
1、什么是索引
为了能够在数据表中快速的查询和定位记录。数据库中的索引与书籍中的目录类似。
2、作用
(1)提高查询速度
(2)确保数据的唯一性
(3)可以加速表和表之间的连接,实现表与表之间的参照完整性
(4)使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
(5)全文检索字段进行搜索优化
3、分类
主键索引(PRIMARY KEY)
唯一索引(UNIQUE)
常规索引(INDEX)
全文索引(FULLTEXT)
4、创建索引
(1)创建唯一性索引
create unique index i_cellphone on sys_emp(cellphone);
(2)创建普通索引
create index i_name on sys_emp(name);
5、索引准则
(1)索引不是越多越好
(2)不要对经常变动的数据加索引
(3)小数据量的表建议不要加索引
(4)索引一般应加在查找条件的字段