Java教程

数据库学习总结(用于考研复试)

本文主要是介绍数据库学习总结(用于考研复试),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

只整理了一小部分,有错误还请各位大哥指正!

 

0.B树和B+树的区别(重点)

B+树是应数据库所需而出现的一种B树的变形。

B+树结点的子树个数=关键字个数。而B树子树个数-1=关键字个数。

B+树仅在叶子节点存储索引对应信息(而B树则每个节点中都存放了索引对应信息),所以一个磁盘可以存下更多的索引元素,大大减少磁盘访问操作。这也是为什么大多数数据库选择B+树的主要原因。

B+树叶子节点间有双向的指针,支持顺序查找、范围查找。

1.当数据量很大时如何对查询做一些优化

在数据库中创建索引,索引是帮助数据库高效获取数据的排好序的数据结构,相当于设置了一个目录。

2.常见的MySQL主要的两种索引结构

Hash索引和B+ 树索引

3.mysql底层为什么采用B+树而不是其他

对于Hash表而言:B+树叶子节点有指针相连,支持范围查找,而Hash不支持(致命缺点)。不支持多列联合索引的最左匹配规则。并且Hash存在哈希碰撞的情况。

对于红黑树而言:B+树的树的高度更矮,可以减少磁盘访问操作。

对于B树而言:B+树仅在叶子节点存储索引对应信息,所以一个磁盘可以存下更多的索引元素,大大减少磁盘访问操作。并且B+树支持范围查找。

4.InnoDB存储引擎(默认B+树索引)

InnoDB基于磁盘存储,即数据都是存储在磁盘上的,由于 CPU 与磁盘的速度差很大, 所以使用缓冲池技术来提高数据库的整体性能。

5.B+ 树的叶子节点都可以存哪些东西?两者有什么区别吗? 

可能存储的是整行数据,也有可能是主键的值。

在 InnoDB 里,B+ 树的叶子节点存储了整行数据的是聚集索引。而存储了主键的值的是非聚集索引,此时还需回表查询对应数据。

6.最左前缀原则

即最左优先,在检索数据时从联合索引的最左边开始匹配,并且不能跳过索引中的列。

查询语句必须包含所有列, 或者第一列,前两列, 前三列, 以此类推...只是不能跳过索引中的列,如果跳过则会使B+树的查找退化成顺序查找。

(因为只有在前一个字段相等情况下该字段才有序,所以跳过前一个字段直接查找相当于需要顺序查找。)

7.事务

是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。(原子性、一致性、隔离性、永久性)

8. 范式

可以理解为一张数据表的表结构所满足的某种设计标准的级别。

1NF:符合一范式的表中的属性都不可再分。(问题:数据冗余,增删改异常)

2NF:看数据表中是否存在非主属性对码的部分函数依赖。不存在则属于第二范式。

码:可以确定一条数据的属性的集合。

非主属性:除了码的其他属性。

部分函数依赖:非主属性可以由码中的一部分决定。而不是需要整个码才能决定。(相对于完全函数依赖)如姓名这个非主属性可以由码的一部分(学号)决定,所以是部分函数依赖。

3NF:看数据表中是否存在非主属性对码的传递函数依赖。不存在则属于第三范式。

传递函数依赖:A依赖B,B依赖C,那么A依赖C。

学习地址:https://www.bilibili.com/video/BV14Z4y1d7Zr?p=2 (前50min是干货,后面都是广告。。)

这篇关于数据库学习总结(用于考研复试)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!