SQL入门第六篇——事务与索引
事务介绍
- 什么是事务?一个事务就是一个完整的业务逻辑,就是a转账给b,那么a要扣钱,b要加钱两者需要同时进行。
- 只有DML的三个语句和事务有关系,其他都没有关系。因为三个语句是数据库表的增删改。只要你的操作一旦涉及到就需要考虑安全问题。
- 提交事务:清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中,提交事务标志着,事务的结束,并且是一种全部成功的结束。
- 回滚事务:将之前所有的DML操作全部撤销,并且清空事务性活动的日志文件回滚事务标志着,事务的结束。并且是一种全部失败的结束。
- 怎么提交事务,怎么回滚事务
提交事务:commit
回滚事务:rollback
事务对应的英语单词是:transaction - 事务四大特性:原子性,一致性,隔离性,持久性
- 事务的隔离性:有四种级别
读未提交:read uncommitted,事务A可以读取到事务B这种现象称为脏读现象
读已提交:read committed,事务A只能读取到事务B提交后的数据
可重复读:repeatable read,事务A读取到了事务B,后来事务B修改并且提交了,那么事务A还是能读取到没修改之前的数据
序列化:seriallizable,最高级别效率也是最低,不能并发进行。
索引简介
- 索引:类书书本的排列方式,有目录和小节。遵循左小右大的原则,采用中序遍历
提醒1:在任何数据库中主键都会自动添加索引对象,id字段上自动有索引。如果一个字段上有unique约束的话,也会自动创建索引对象
提醒2:在任何数据库中,任何一张表的任何一条记录硬盘存储上都有一个硬盘的物理存储编号
提醒3:在mysql中,索引是一个单独的对象,不同的存储引擎以不同的形式存在,在MYISAM存储引擎中,索引存储在一个.MYI文件中。在InnoDB存储引擎中索引存储在一个逻辑名称叫做tablespace的当中。在MEMOEY存储引擎中,索引存储在一个内存当中,不管索引存储在哪里,索引在mysql当中都是一个树的形式存在(自平衡树:b+树) - 在mysql当中,主键上,以及unique字段上都会自动添加索引的什么条件下,我们会考虑给字段添加索引呢?
条件1:数据量庞大
条件2:该字段经常出现在where的前面,以条件的形式存在,经常被扫描
条件3:该字段很少的DML操作 - 索引怎么创建和删除,语法是什么?
创建索引:create index emp_ename_index on emp(ename);
删除索引:drop index emp_ename_index on emp; - 索引失效的情况:
- 使用%或者_,
- 2使用or,
- 3使用复合索引的时候,没有使用左 侧的列查找。
- 4在where当中索引参加了运算
- 在where当中索引列使用了函数
- 索引是各种数据库进行优化的重要手段。优化的时候优先考虑的因素就是索引
有单一索引,复合索引,主键索引,唯一性索引
DBA命令
- 必会的导出与导入:mysql dump bjpowernode >D:bjpwernode.sql -uroot(用户名)-p(密码)
- 导入:mysql dum p bjpowernode emp>D:bjpwernode.sql -uroot(用户名)-p(密码)
- 初始话数据库:source D:\bjpowernode.sql