从MySQL开始聊聊“树”结构 (上)
Posted CrazyCodes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从MySQL开始聊聊“树”结构 (上)相关的知识,希望对你有一定的参考价值。
前言
嗨喽,大家好,我是CrazyCodes, 近一年写的文章,都是一些广度方面的思考,新的一年,在技术深度上也需要有更多的探索,感谢各位的持续支持!
mysql
先聊聊大家熟知的MySQL,我们使用MySQL肯定是有数据存储的需求。
我们从基础开始看,首先我们创建一张用户表
CREATE TABLE `user` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
这是一张简单的用户表,包含id和name两个字段,id为主键自增,name上没有索引。想必大家对索引都有一定的认识,索引是一种数据结构,即本篇的核心议题“树”结构,索引可以达到快速命中某条记录,“快速”一词代表着在时间和空间相结合的最优解,当然也并不代表索引越多,数据表设计越合理,要根据实际业务去选择。
我们随机向表中插入几条记录
INSERT INTO `user` VALUES(1,"Join");
INSERT INTO `user` VALUES(2,"Tom");
INSERT INTO `user` VALUES(3,"Jeein");
按照预期,数据库内出现三条对应的记录,这里我使用语句
SELECT * FROM `user`;
对数据进行查询
看到这里,你可能说了,这是在讲什么,增删改查都是常识,有什么好讲的,那我们现在就正式进入正题,首先从插入记录开始说起,MySQL会使用B+树来存储数据记录,B+树是B树的延伸,而B树又是平衡二叉树的延伸,除了平衡二叉树还有二叉查找树,依次基于其概念延伸的排序,大概是如下这样
B+树 -> B树 -> 平衡二叉树 -> 二叉查找树 -> 二叉树 -> 树
当然也不仅仅是所有跟树有关的数据结构,这里为了提高学习树这种数据结构的兴趣,所以以MySQL讲起,纠其根源,再结合MySQL的数据记录将这一串知识链接起来,那我们把这个顺序倒过来依次讲起
树 -> 二叉树 -> 二叉查找树 -> 平衡二叉树 -> B树 -> B+树
我尽量不把这些数据结构讲成教科书的样子。
树
以上是关于从MySQL开始聊聊“树”结构 (上)的主要内容,如果未能解决你的问题,请参考以下文章