SQL语言分类

DCL数据控制语言:创建用户,分配权限

grant、revoke

DDL数据定义语言:操作数据库、表、列

create、drop、alter

DML数据操作语言:操作表数据

select、insert、delete、update

事务ACID

特性

用于保证数据库的完整性

  • 原子性:Atomicity,每一列为不可分割的基本数据项,执行事务,要么都成功,要么都失败
  • 一致性:Consistency,执行后,保持数据一致
  • 隔离性:Isolation,事务之间相互独立,互不影响
  • 持久性:Durability,数据永久存储在数据库中

    范式

  • 原子性:每列数据要不可再分

  • 唯一性:每条记录必须唯一(主键)
  • 关联性:每列记录需与主键有直接关联

写入原理:先拷贝数据到undo日志,再修改记录到redo日志
发生错误:可提交redo日志重新同步,也可使用undo日志来回滚到之前状态

若多条sql语句需同时作为一个事务,需手动管理事务

  1. 隔离级别

    1. set session transaction isolation level read....;
  2. 开启事务

    1. start transaction;
  3. 写入多条sql语句

  4. 提交 / 回滚 (只要不提交,就没有执行sql语句,可以执行回滚)
    1. commit / rollback;

    隔离级别

    读取未提交数据(买票锁座)
    1. set session transaction isolation level read uncommitted;
    读取已提交数据 (转账)
    1. set session transaction isolation level read committed;
    重复读取(默认) (锁单后电商提价不受影响)
    1. set session transaction isolation level repeatable read;
    序列化(不能并发) (前事务不提交,后事务就不能执行)
    1. set session transaction isolation level serializable;

    并发

    数据库联合起来组成集群,解决并发问题