什么是数据库
生活中我们会遇到很多数据,比如支付宝账单、手机通讯录、2020年新冠疫情人数等。这些数据都是储存在数据库中的,我们给数据库下一个定义:
- 将大量数据保存起来,通过计算机加工而成的可以进行高效访的数据集合称为数据库(DataBase,简称 DB)
- 用来管理数据库的计算机系统称为数据库管理系统(DataBaseManagement System,简称DBMS)
- 从事管理和维护数据库管理系统(DBMS)的相关工作人员称为数据库管理员(Database Administrator 简称DBA)
为什么要使用数据库?
对于我们个人而言,Excel、Word、记事本等功能基本就足够支持我们对数据的记录,但对于面向多人的公司和政府机构等,事情就没有这么简单了,试想所有公司都用 Excel 储存数据,那么就会遇到以下的场景:
-
我想查询我 10 年前的某一笔账单,支付宝公司在一堆 Excel 中艰难的找到了我的账单,此时已经过去 2小时了。
-
我丢了一个手机,手机通讯录全没了
-
浙江省今日新出院 10 个新冠病人,为了把这个信息通知到全省,早上八点,省疾控中心下发一个 Excel 到各级单位用于展示,早上九点,又出院一个病人,省疾控中心又得发一个新的Excel.
以上场景显然是不能容忍的,使用 Excel 或者记事本管理数据,拥有以下的不足:
- 无法多人共享数据
- 无法操作大量数据
- 无法应对多次修改数据
而数据库就可以解决以上的问题,具有持久化储存数据的能力,所以在当代社会,所有的公司都会使用数据库来储存数据。
数据库的分类
按照早期的数据库理论,数据库模型有三种
- 层次式数据库
- 网络式数据库
- 关系型数据库
随着技术的变迁,前两者已经基本消失,在当下的互联网,最常用的数据库模型主要是两种,即关系型数据库和非关系型数据库。
关系型数据库
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联表的表格分类、合并、连接或选取等运算来实现数据的管理。
我们都用过 Excel,Excel 是一张张的二维表,每个表都由行和列组成的。关系型数据库也是由多个表组成的,只不过各个表之间是有联系的,所以简单的讲:
表的结构
- 我们可以看到,表由表名、行、列、列名构成表名是表的名称
- 列就是 Excel 中的一列,表示纵轴
- 行就是 Excel 中的一行,表示横轴
- 列名是表格的第一行,表示列的名字,列名不可以重复表格实质上是一个二维数组,行和列都是从0开始数的(数组的特性)
- 列名不是第一行,在表格数据的请求时从孙悟空那一行开始请求,对应的下标是 0
表的关系
学号 | 姓名 | 出生日期 | 性别 |
---|---|---|---|
0001 | 赵 | 20050315 | 男 |
0002 | 钱 | 20050314 | 男 |
0003 | 孙 | 20050313 | 女 |
0004 | 李 | 20050312 | 男 |
课程编号 | 课程名称 | 教师号 |
---|---|---|
0001 | 语文 | 0001 |
0002 | 数学 | 0002 |
0003 | 英语 | 0003 |
0004 | 数据结构 | 0004 |
教师编号 | 教师姓名 |
---|---|
0001 | 周 |
0002 | 吴 |
0003 | 郑 |
0004 | 王 |
成绩单编号 | 学号 | 课程号 | 成绩 |
---|---|---|---|
1 | 0001 | 0001 | 90 |
2 | 0002 | 0001 | 91 |
3 | 0003 | 0002 | 92 |
4 | 0004 | 0001 | 93 |
我们可以看到,上述的几张表格之间,都存在有关系的数据,比如我们可以通过学号查询到赵的所有考试成绩,对应的授课老师。
关系就是数据能够对应的匹配,在关系型数据库中正式名称叫联结对应的英文名称叫做 join。这个在以后的关联查询中会使用到,大家先记住这个名字就行。
SQL(Structured Query Language)
在数据库的学习中,我们不可避免的会接触 SQL,SQL 就是Structured Query Language(结构化查询语言),我们使用 SQL语言来对数据库进行操作,数据库就像是碗,里面的数据是土豆泥我们吃土豆泥时需要一个勺子,QL就是起到勺子的功能,用于从数据库中有结构的查询。
NoSQL(非关系型数据库)
NOSQL,泛指非关系型的数据库,最常见的解释是“non-relational",“Not Only SQl"也被很多人接受。NoSQL 仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的 ACID 特性。NoSQL 是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。常见的有redies
mongodb
等等
随着互联网 web2.0 网站的兴起,传统的关系数据库在应付 web2.0网站,特别是 超大规模和高并发 的 SNS 类型的 web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL 数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用的难题。
NoSQL 的兴起并不意味着关系型数据库已经过时,事实上,关系型数据库依然占有绝对的市场份额,NoSQL更像是一种数据库的发展方向和热点,因此在数据库的学习中,我们首先要掌握好关系型数据库,然后再学习 NoSQL,鱼与熊掌兼得。