1.5 事务【transaction】
- 事务是一个不可分割的执行单元
- 事务作为一个整体要么一起执行,要么一起回滚
插入测试数据
1 | mysql> create table bank( |
1.5.1 事务操作
1 | 开启事务:start transaction或begin [work] |
例题:
1 | mysql> delimiter // # 更改定界符 |
1 | 思考:事务什么时候产生?什么时候结束? |
1.5.2 设置事务的回滚点
语法:
1 | 设置回滚点: savepoint 回滚点名 |
例题:
1 | mysql> start transaction; |
1.5.3 事务的特性(ACID)
原子性(Atomicity):事务是一个整体,不可以再分,要么一起执行,要么一起不执行。
一致性(Consistency):事务完成时,数据必须处于一致的状态。
隔离性(Isolation):每个事务都是相互隔离的
永久性(Durability):事务完成后,对数据的修改是永久性的。
1.6 索引【index】
索引的优点:查询速度快
索引的缺点:
增、删、改(数据操作语句)效率低了
索引占用空间
1.6.1 索引的类型
普通索引
唯一索引(唯一键)
主键索引:只要主键就自动创建主键索引,不需要手动创建。
全文索引,搜索引擎使用,MySQL不支持中文的全文索引,我们通过sphinx去解决中文的全文索引。
1.6.2 创建普通索引【create index】
语法:
1 | create index [索引名] on 表名 (字段名) |
例题:
1 | # 创建索引方法一 |
1.6.3 创建唯一索引
1 | 语法一:create unique index 索引名 on 表名 (字段名) |
例题
1 | # 方法一: |
1.6.4 删除索引
语法
1 | drop index 索引名 on 表名 |
例题
1 | mysql> drop index ix_stuname on stuinfo; |
1.6.5 创建索引的指导原则
- 该列用于频繁搜索
- 改列用于排序
- 公共字段要创建索引
- 如果表中的数据很少,不需要创建索引。MySQL搜索索引的时间比逐条搜索数据的时间要长。
- 如果一个字段上的数据只有几个不同的值,改字段不适合做索引,比如性别。