mysql事务

数据库事务

如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败

事务指的是数据库一种保护数据的方式

事务一般由增删改操作自动调用,事务根据数据库不同提交时机也是不同的

  • 操作
    • 开启事务 start transaction
    • 回滚 rollback
    • 提交 commit

ACID原则

  • 原子性:原子性是指事务的所有操作要么全部成功,要么全部失败回滚
  • 一致性: 事务提交后,整个数据库所看到的数据都是最新数据,所有人看到的数据都是一致的
  • 隔离性:别人无访问我们未提交的数据,而且一旦这个数据被我修改,被人与无法进行操作,多个事务之间要相互隔离
  • 持久性: 事务一旦被提交,数据库进入到一个全新的状态,数据不能返回到上一个状态

事务的隔离级别

根据数据库的不同用途,我们可以对数据库事务进行级别设置

  • 读未提交
  • 读已提交: 可以避免脏读的出现
  • 可重复读: 可以避免脏读,不可重复读的发生
  • 序列化: 可以避免脏读 不可复读、幻读的发生

脏读:读取别人未提交的数据,这个数据是不安全的

虚读:第一次读取的数据,第二次在读取的时候有可能别别人修改了

幻读:第一次读取数据 ,第二次多了一条或者少了一条

表的约束

  • 主键约束 primary key
  • 唯一约束unique
  • 非空约束 not null
  • 外键约束 foreign key

索引

  • 常规索引

    常规索引,也叫普通索引,它可以提高查询的效率

  • 主键索引(聚簇索引)

    主键索引,也简称为主键。他可以提高查询效率,并提供唯一性约束

  • 唯一索引

  • 外键索引

    外键的主要作用是保证记录的一致性和完整性

  • 组合索引

    回表查询

  • 优点
  • 索引可以让mysql快速的查找到我们所需的数据
  • 索引大大减少的mysql服务器需要扫描的数据量
  • 索引可以帮助服务器避免排序和临时表
  • 索引可以将随机I/O 变为 顺序I/O
  • 缺点
  • 影响数据库的增删改的速度

视图

行和列的数据来自定义视图所使用的表,并且还是使用视图是动态生成的

优点

  • 定制用户数据,聚焦特定数据
  • 简化数据操作
  • 提高数据的安全性
  • 共享所需数据
  • 更改数据格式
  • 重用SQL语句

创建 查看

create view <视图名> as <select 语句>
<select 语句>


#删除视图
drop view if exists <视图名>

三范式

创建表需要遵循的规范

  • 第一范式: 数据库表的每一项都是不可分割原子数据项,而不能是集合,数组
  • 第二范式: 数据库中每一行数据必须依赖主键,每一行数据都要有主键,主键是一行数据的唯一标识,保证表中每列都和主键有关
  • 第三范式:表中非主键的列要完全依赖主键,不能出现部分属性依赖于其他属性,当出现传递依赖的时候要将非依赖于主键的列专门创建一张表进行管理。
posted @ 2024-02-01 20:56  low-reed  阅读(22)  评论(0)    收藏  举报