6.事务
6.1 什么是事务
要么都成功,要么都失败,不能只发生其中一个动作
假如有两条SQL语句组成一组事务
- SQL执行 A给B转账
- SQL执行 B收到A的钱
将一组SQL放在一个批次中执行(防止一条成功,一条失败的情况)
事务原则: ACID原则 原子性,一致性,隔离性,持久性
原子性(Atomicity)
要么都成功,要么都失败
一致性Consistency
事务前后的数据完整性要保证一致,比如转账的例子,前后的数目要一致
持久性(Durability)–事务提交
事务一旦提交则不可逆,被持久化到数据库中
隔离性(Isolation)
当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,事务之间要互相隔离
隔离所导致的一些问题
脏读
指一个事物读取到另一个事务未提交的数据
不可重复读
在一个事务内读取表中的某一行数据,多次读取结果不同(这个不一定是错误,只是某些场合不对)
虚读(幻读)
是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。
Java中的代码布局设计如下
截图来自狂神说Java
7.索引
索引(index)是帮助MYSQL高效获取数据的数据结构
7.1 索引分类
在一个表中主键索引只能有一个,唯一索引可以有多个
基础语法
7.2 测试索引
索引在小数据量的时候用处不大,但是在大数据的时候,区别十分明显
7.3索引原则
- 索引不是越多越好
- 不要对进程变动数据加索引
- 小数据量的表不需要加索引
- 索引一般加在常用查询的字段上
8.权限管理和备份
8.1 用户管理
可视化:可以直接进行添加修改
SQL命令操作
用户表:mysql.user
本质:读这张表进行增删改查
8.2 MySQL备份
为什么要备份:
- 保证重要的数据不丢失
- 数据转移
MySQL数据库备份方式
- 直接拷贝物理文件
- 可视化工具手动导出(可视化很方便,右击选中即可,导入直接拖进去)
- 命令行导出 mysqldump 命令行导出