数据库(一)

数据库分为关系型数据库与非关系型数据库
常见的关系型数据库有:Oralce Mysql Sqlserver ,非关系型数据库:Redis,Hbase

关系型数据库

在这里插入图片描述
关系型数据库系统(RDBMS)
在这里插入图片描述

索引

  1. 为什么使用索引

    在数据库查找的时候用select查询是走的全表扫描当数据量大的时候会很慢,而加入索引会减少查询时间。但是当数据量小的时候直接全表扫描会比索引快。

  2. 用什么数据做索引好

    一般用主键、唯一键唯一键做索引。

  3. 索引的数据结构
    树(二叉树、B-Tree 、 B+ - Tree)、Hash

B-Tree

定义

在这里插入图片描述

  1. 根节点至少包括两个孩子,根节点至少有一个关键字
  2. 树中每一个节点至少含有M(M>=2)个孩子
  3. 除跟和叶子节点每个节点至少有ceil(m/2)个孩子( ceil函数返回大于或等于 x 的最小的整数值)
  4. 所有叶子节点位于同一层
  5. 假设每个非终端节点中包含有N个关键字信息,其中
    1.ki(i=1…n)为关键字,且关键字按顺序升序排列k(i-1)<ki
    2.关键字的个数必须满足ceil(m/2)-1<=n<=m-1
    3.非叶子节点的指针p[1],p[2]…p[M];其中p[1]指向关键字小于k[1]的子树,p[M]指向关键字大于k[M-1]的子树,其他p[i]指向关键字属于(k[i-1],k[i])的子树

B树的查找

  1. 从根节点开始,36比最大关键字35大所以走向P3指向的子树
  2. 36又比最小关键字65小所以走向P1指向的子树
  3. 在此树找到目标关键字36

B树的插入

  1. 根据插入的数据找到叶子节点
  2. 判断插入后当前节点数据是否小于等于m-1,如果等于则结束,否则进入3
  3. 以节点中心的key为中心分裂成左右两部分,然后将中心的key插入到父节点中,然后中心的key的左子树为分裂的左部分,右子树为分裂的右部分。
    例如将3,90插入下图的三阶B树
    在这里插入图片描述
    插入3,因为3小于30,所以找到左子树20,又因为小于20,所以找到叶子节点5,插入符合小于等于2所以插入三的B树是
    在这里插入图片描述
    插入90时,因为叶子节点中超过了2,所以要进行步骤三的操作
    在这里插入图片描述
    85的左树为75,右树是90(xmind画的图所以线有点问题),这个时候50,70,85又超过了2所以也需要执行步骤三
    在这里插入图片描述
    最后的树结构是这样的
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值