SQL语言分类
DCL数据控制语言:创建用户,分配权限
grant、revoke
DDL数据定义语言:操作数据库、表、列
create、drop、alter
DML数据操作语言:操作表数据
select、insert、delete、update
事务ACID
特性
用于保证数据库的完整性
- 原子性:Atomicity,每一列为不可分割的基本数据项,执行事务,要么都成功,要么都失败
- 一致性:Consistency,执行后,保持数据一致
- 隔离性:Isolation,事务之间相互独立,互不影响
-
范式
原子性:每列数据要不可再分
- 唯一性:每条记录必须唯一(主键)
- 关联性:每列记录需与主键有直接关联
写入原理:先拷贝数据到undo日志,再修改记录到redo日志
发生错误:可提交redo日志重新同步,也可使用undo日志来回滚到之前状态
若多条sql语句需同时作为一个事务,需手动管理事务
隔离级别
set session transaction isolation level read....;
开启事务
start transaction;
写入多条sql语句
- 提交 / 回滚 (只要不提交,就没有执行sql语句,可以执行回滚)
commit / rollback;
隔离级别
读取未提交数据(买票锁座)
读取已提交数据 (转账)set session transaction isolation level read uncommitted;
重复读取(默认) (锁单后电商提价不受影响)set session transaction isolation level read committed;
序列化(不能并发) (前事务不提交,后事务就不能执行)set session transaction isolation level repeatable read;
set session transaction isolation level serializable;
并发
数据库联合起来组成集群,解决并发问题
