1.数据库概念

数据库概述

数据库(DATA BASE)指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据

数据库分类
关系型数据库SQL:

关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录,存储数据是以表结构进行存储的

SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作

主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2

非关系型数据库NOSQL:

NoSQL(NoSQL = Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称

除了主流的关系型数据库外的数据库,都认为是非关系型,存储数据是以键值对进行存储

主流的 NoSQL 数据库有 Redis、MongBD、Hbase、CouhDB

差异:

1、数据存储方式不同
关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

2、扩展方式不同
SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。

为了支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

3、对事务性的支持不同
如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。

虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面

相关概念
  • Data:数据,是数据库中存储的基本对象,是描述事物的符号记录。
  • Database:数据库,是长期储存在计算机内、有组织的、可共享的大量数据的集合。
  • DBMS:数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,用于科学地组织、存储和管理数据、高效地获取和维护数据。
  • DBS:数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成。
数据库索引
数据库索引:
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容,使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息
主要作用:
提高查询效率
分类:
索引原理上分为三种:
btree(树)索引---hash索引---全文索引 
使用场景:
当数据表较大时使用索引,可以增加效率,索引的个数不是越多越好
btree索引类型:
唯一索引---主键索引---聚集索引---单列索引---组合索引

索引的优点:
1.通过建立索引可以极大地提高在数据库中获取所需信息的速度,同时还能提高服务器处理相关搜索请求的效率
2.设计数据库时,通过创建一个惟一的索引,能够在索引和信息之间形成一对一的映射式的对应关系,增加数据的惟一性特点。
3.能提高数据的搜索及检索速度,符合数据库建立的初衷。
4.能够加快表与表之间的连接速度,这对于提高数据的参考完整性方面具有重要作用。
5.在信息检索过程中,若使用分组及排序子句进行时,通过建立索引能有效的减少检索过程中所需的分组及排序时间,提高检索效率。

bree索引
(1)所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的
(2)非叶子结点存储的是叶子结点的索引(稀疏索引),叶子结点存储的是关键字和数据
(3)非叶子结点不能存数据
(4)顺序存储,每一个叶子节点到根结点的距离是相同的
(5)根节点横向也有链指针
可以用Btree索引进行全关键字、关键字范围和关键字前缀查询。如果使用索引,必须保证按索引最左边前缀进行查询。由于Btree中节点是顺序存储的,可以对查询结果进行order by。
限制:
(1)查询必须从索引的最左边的列开始
(2)不能跳过某一索引列。
(3)存储引擎不能使用索引中范围条件右边的列。
例如,如果你的查询语句为WHERE last_name=”Smith” AND first_name LIKE ‘J%’ AND dob=’1976-12-23’,则该查询只会使用索引中的前两列,因为LIKE是范围查询。

hash索引
简单地说,哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。
从上面的图来看,Btree索引和Hash索引的明显区别是:
(1)如果是等值查询,那么哈希索引明显有绝对优势,因为只需要经过一次算法即可找到相应的键值;当然了,这个前提是,键值都是唯一的。如果键值不是唯一的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据;
(2)从示意图中也能看到,如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;
同理,哈希索引也没办法利用索引完成排序,以及like ‘xxx%’ 这样的部分模糊查询(这种部分模糊查询,其实本质上也是范围查询);
(3)哈希索引也不支持多列联合索引的最左匹配规则;
(4)Btree的关键字检索效率比较平均,不像Hash那样波动幅度大,在有大量重复键值情况下,哈希索引的效率也是极低的,因为存在所谓的哈希碰撞问题。

增加索引优势:
1,加快查询速度
2,创建唯一索引来保证数据表中数据的唯一性
3,实现数据的完整性,加速表和表之间的连接
4,减少分组和排序的时间

索引的分类:
唯一索引
     主键索引:创建索引的字段如果有主键约束,那么该字段会自动变为主键索引,也可以对一个普通字段添加主键索引,要求字段值非空且唯一,主键索引是特殊的唯一索引
     唯一索引:创建索引的字段如果有主键约束,那么该字段会自动变为唯一索引,也可以对一个普通字段添加唯一索引,要求字段值唯一
单列索引:对指定的字段添加索引,对索引字段的值没有要求
组合索引:对多个字段组合在一起创建一个索引

全文索引:指定对myisam存储引擎表创建全文索引,并且要求全文索引字段的数据类型为字符串类型(char,varchar),可以对索引字段的值进行全文查找,一般用于文章类型的数据的搜索

创建索引的规则
(1)创建索引并非 ' 是越多越好
(2)数据量小得表最好不要创建索引
(3)避免对经常更新的数据创建索引
(4)在条件表达式中经常用到的不同值较多的列创建索引
(5)当唯一性是某种数据本身的特征时,我们创建唯一性索引
(6)在频繁进行排序或分组的列上建立索引,如果排序的列有多个,可以创建全文索引

#查看数据表创建的索引信息
show  index    from   表名\G
主键索引  创建主键  就相当于创建了一个索引
主键属于索引中一种 在数据库关系表中为表定义主键将自动创建主键索引,主键所以是唯一索引的类型  该索引要求主键中的每个值都是唯一的  当在查询中使用主键索引,可以加快数据的访问
主键索引的创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值