本文主要是介绍MySQL学习总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据库的三大范式
第一范式
:每个列都不可以再拆分
第二范式
:在第一范式的基础上,非主键列完全依赖于主键
第三范式
:在第二范式上,非主键列只依赖主键,不依赖其他非主键
事务的并发问题
脏读
:事务A读取了事务B更新的数据,然后数据B回滚,那么A读到的是脏数据
不可重复读
:事务A多次读取同一数据,事务B在事务A读取的过程中对数据进行了修改并提交,导致A多次读的数据不一样
幻读
:事务A读取数据的时候,事务B增添了数据,导致A读完后发现还有数据没读
- 不可重复读侧重于修改,幻读侧重于新增或删除
- 解决不可重复读只需要锁行,而解决幻读需要锁表
事务的隔离级别
事务隔离级别 |
脏读 |
不可重复读 |
读未提交 |
是 |
是 |
不可重复读 |
否 |
是 |
可重复读 |
否 |
否 |
串行化 |
否 |
否 |
b-tree、b+tree的区别
- b-tree的关键字、索引和记录是放在一起的
- b+tree的记录只放在叶子节点中,而非叶子节点中只有关键字和指向下一个节点的索引
- b-tree中越靠近根节点的记录查找事件越快,只要找到关键字即可确定记录的存在
- b+tree中每个记录的查找事件基本一样,都需要从根节点走到叶子节点
- b+tree的磁盘读写代价更低,查询效率更加稳定,b+tree更适合建索引
drop、delete、truncate的区别
- 不需要再用一张表时直接用drop删除
- 删除所有数据,但是保留表结构用truncate
- 想删除部分数据的时候用delete
union和union all的区别
- union会多获取的数据进行去重和排序
- union all会保留所有查询结果,并不会进行去重和排序
- 在不去重的前提下,union all的效率要高一些
char和varchar的区别
- char,定长,固定长度的字符串推荐使用char类型存储,节省空间且效率高
- varchar,不定长,效率低
字段为什么要定义成not null
- null值会占用更多的字节,且会在程序中造成很多不符合预期的情况
这篇关于MySQL学习总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!