MySQL学习心得(一)
一:关于MySQL介绍
- 一句话省流,MySQL就是一种帮助我们来管理数据的关系型数据库
- 里面存储的方式类似excel那种的表格类型
- 但是数据库里面最神奇的,最让人感兴趣的是他对数据的存储方式,以及对与数据的管理,在了解完原理后是真的让人感觉前人的智慧是无穷的。
- 下面我分几个方面来阐述我的一些学习理解
二:MySQL是如何组织数据的
- 首先我们要知道的是,MySQL里面的数据在外面,也就是我们看到的是怎么样的,一个数据库里里面有很多的表,在一张表里面,分为行和列两个方向一行是一个数据单元,一行数据是属于一个个体的,也就是说一行数据就是一个基本单位,因此这一行数据是存储在一块的。而不同的列,代表不同字段,我们可以理解为一个个体的不同属性,不同属性的类型都可以不一样,甚至可以为空,用null表示。
- 了解完外在形式之后,我们来深入底层,来看看一个表是如何把无数行数据组织起来形成一张表的。首先 我们要了解一种数据结构叫做B+树,使用B+树数据结构设计索引机制来管理查询表的信息,我们可以把索引分为聚集(聚簇)索引和二级索引,一般聚集索引由主键来充当,主键就是每一行的独特id,不能重复的一个属性,由主键值大小来形成一个B+树,然后将每一行的主键值都写在一个叶子节点里面,随后在每个主键值的下面挂着这一行数据,同时不同的叶子节点用双向链表连接起来,也就是说聚集索引是用来组织全部数据的,我们可以根据主键来查到所有数据,我们可以把聚集索引就当作这个表本身,全部的数据都存在聚集索引里面
- 还有一种索引是二级索引,二级索引就是以这张表里面的其他值来生成的一个B+树,和聚集索引里面最大不同点是,它的叶子节点里面存的就是id值也就是主键值,随后拿着这个值去聚集索引里面再查,这个过程就叫回表查询。
- 可以说,一张数据库的表就是一个庞大的B+树,每个叶子结点都存着一行数据,同时还有其他辅助的B+树,因此,我们既可以在叶子结点一个一个遍历,也可以利用B+树的搜索属性来快速搜索,提高速度。
- 对B+树不了解的可以来到这个网址来看看B+树张什么样子B+ Tree Visualization ,可以试试插入数据,删除数据是怎么改变这个数据结构的。
三:数据库是如何搜索数据的
- 在了解完数据库如何组织数据后,我们来看看数据库如何利用B+树数据结构来快速搜索数据的。
- 我们要知道的是,数据库存储的最小单位是页,大小为固定的16KB,B+树里面的每个节点都是1页,因此,一个内部节点里面可以放很多索引键值和下一层的指针,因此在大规模数据下,查找效率极快,甚至可以做到百万数据只需要三次查询
- 如果我们使用主键查询,我们可以直接查到一行数据在的位置,如果我们使用二级索引来查询,我们只能查到主键,随后进行回表查询,再找到数据位置。
- 可以看到,如果我们使用了B+树的索引结构来查询,能把查询效率提到极快,本质上是一种空间换时间的行为,如果没有用上索引,只能用最下面叶子结点的双向链表来一个个查询。
- 这种极快查询就是数据库存在的真正意义,能帮助我们快速查询数据,而不是将大量时间浪费在遍历上。
四:SQL语言
- SQL语言是数据库的基本语言,操作数据库需要使用SQL语言来操作,不论是插入还是查询,都需要SQL语言来操作。
- SQL语言需要大量时间来练习熟悉,推荐在了解数据库的基础部分后,对SQL语言稍微练习练习再去深入底层,了解一些深入的东西
- 推荐去刷一刷力扣的50道SQL题目高频 SQL 50 题(基础版) - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台
- 尤其是对于查询的语法,要很熟练,基本上数据库90%的工作都是在查询
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 GuMing的殿堂!
评论
