数据库三大范式是什么、mysql有哪些索引类型,分别有什么作用、事务的特性和隔离级别
1 数据库三大范式是什么
-https://zhuanlan.zhihu.com/p/618012849
-# 第一范式:1NF 是指数据库表的每一列都是不可分割 -每列的值具有原子性,不可再分割。 -每个字段的值都只能是单一值 -# 第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF) 如果表是单主键,那么主键以外的列必须完全依赖于主键,其它列需要跟主键有关系 如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。 -# 第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式 第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖 不存在传递依赖
2 mysql有哪些索引类型,分别有什么作用
-主键索引(聚簇索引)---》主键,表不建立主键,也会有个隐藏字段是主键,是主键索引,mysql是基于主键索引构建的b+树,如果没有主键,如果按主键搜索,速度是最快的---》一定会有主键索引 -辅助索引(普通索引)-->咱们给某个自己加索引,django index=True,通过该字段查询,会提高速度,如果字段 变化小(性别,年龄),不要建立普通索引 -CREATE INDEX index_id ON tb_student(id); -唯一索引(unique) -不是为了提高访问速度,而是为了避免数据出现重复 -唯一索引通常使用 UNIQUE 关键字 -CREATE UNIQUE INDEX index_id ON tb_student(id); -组合索引(联合索引) -django 中:class Meta: -CREATE INDEX index_name ON table_name (column1, column2, column3); -全文索引-->基本不用---> 全文索引主要用来查找文本中的关键字,只能在 CHAR、VARCHAR 或 TEXT 类型的列上创建。 在 MySQL 中只有 MyISAM 存储引擎支持全文索引。 全文索引允许在索引列中插入重复值和空值。 不过对于大容量的数据表,生成全文索引非常消耗时间和硬盘空间。 创建全文索引使用 FULLTEXT 关键字
3 事务的特性和隔离级别
-https://www.cnblogs.com/liuqingzheng/p/16480047.html
事务四大特性(ACID)
原子性(Atomicity):数据库把“要么全做,要么全部做”的这种规则称为原子性 隔离性(Isolation):事务之间相互隔离,不受影响,这与事务的隔离级别密切相关 -事务隔离级别 一致性(Consistency):事务执行前后的状态要一致,可理解为数据一致性 持久性(Durable):事务完成之后,她对数据的修改是永恒的,即时出现故障也能够正常保持
隔离级别--->为了保证四个特性的隔离性而有的
-Read uncommitted(读未提交)-ru : 一个事物读到了另一个事务未提交的数据 -Read committed(读已提交)-rc: 如果设置了这个级别一个事物读不到另一个事务未提交的数据 -写事务提交之前不允许其他事务的读操作 -Repeatable read(可重复读取)-rr: -在开始读取数据(事务开启)时,不再允许修改操作,这样就可以在同一个事务内两次读到的数据是一样的,因此称为是可重复读隔离级别 -Serializable(串行化): 求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行
本文作者:Python学习之旅
本文链接:https://www.cnblogs.com/yuezongke/p/17594335.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步