本篇是数据库系列的第1篇,数据库分为关系型数据库和非关系型数据库,今天我们先开始梳理数据库的基础部分。
数据库简单理解就是数据管理的仓库。而数据管理指的就是对各种数据进行分类、组织、编码、查询和维护,主要经历了 3 个阶段,即人工管理阶段、文件系统阶段和数据库系统阶段。每一个阶段都是以减小数据冗余、增强数据独立性和方便操作数据为目的进行发展。
数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。
人工管理阶段
在计算机出现之前,人们主要利用纸张和计算工具(如算盘和计算尺)来进行数据的记录和计算,依靠大脑来管理和利用数据。也就是说,在人工管理阶段,数据主要存储在纸带、磁带等介质上,或者直接通过手工来记录。
人工管理阶段的特点如下:
数据不能长期保存
不便于查询数据
数据不能共享,冗余度大
数据不具有独立性
文件系统阶段
在 20 世纪 50 年代后期到 20 世纪 60 年代中期,计算机中的磁盘和磁鼓等直接存取设备开始普及。这时,可以将数据存储在计算机的磁盘上。这些数据都以文件的形式存储,然后通过文件系统来管理这些文件。
相对于人工管理阶段而言,文件系统使数据管理变得简单,不用再为了一个文件而翻箱倒柜的查找。但是,这些文件中的数据没有进行结构化管理,查询起来还是不方便。
文件系统阶段的特点如下:
数据可以长期保存
数据由文件系统来管理
数据冗余大,共享性差
数据独立性差
无法应对突发事故(文件误删,磁盘故障等)
数据库系统阶段
在 20 世纪 60 年代后期,随着网络技术的发展,计算机软/硬件的进步,出现了数据库技术,该阶段就是所谓的数据库系统阶段。
数据库系统阶段使用专门的数据库来管理数据,用户可以在数据库系统中建立数据库,然后在数据库中建立表,最后将数据存储在这些表中。用户可以直接通过数据库管理系统来查询表中的数据。
相对于文件系统来说,数据库系统实现了数据结构化。在文件系统中,独立文件内部的数据一般是有结构的,但文件之间不存在联系,因此整体来说是没有结构的。数据库系统虽然也常常分成许多单独的数据文件,但是它更注意同一数据库中各数据文件之间的相互联系。
数据库系统阶段的特点如下:
数据粒度是数据库中数据的细化程度。细化程度越高,粒度越小;细化程度越低,粒度越大。
数据由数据库管理系统统一管理和控制
数据共享性高,冗余度低
数据独立性强
数据粒度小
数据管理经历的各个阶段都有自己的背景及特点,数据管理技术也在发展中不断地完善,其 3 个阶段的比较如下表所示。
数据管理的3个阶段 | 人工管理(20 世纪 50 年代中期) | 文件系统(50 年代末至 60 年代中期) | 数据库系统(60 年代后期) |
---|---|---|---|
应用背景 | 科学计算 | 科学计算、管理 | 大规模数据、分布数据的管理 |
硬件背景 | 无直接存取存储设备 | 磁带、磁盘、磁鼓 | 大容量磁盘、可擦写光盘、按需增容磁带机等 |
软件背景 | 无专门管理的软件 | 利用操作系统的文件系统 | 由 DBMS 支撑 |
数据处理方式 | 批处理 | 联机实时处理、批处理 | 联机实时处理、批处理、分布处理 |
数据的管理者 | 用户/程序管理 | 文件系统代理 | DBMS 管理 |
数据应用及其扩充 | 面向某一应用程序难以扩充 | 面向某一应用系统、不易扩充 | 面向多种应用系统、容易扩充 |
数据的共享性 | 无共享、冗余度极大 | 共享性差、冗余度大 | 共享性好、冗余度小 |
数据的独立性 | 数据的独立性差 | 物理独立性好、逻辑独立性差 | 具有高度的物理独立性、具有较好的逻辑独立性 |
数据的结构化 | 数据无结构 | 记录内有结构、整体无结构 | 统一数据模型、整体结构化 |
数据的安全性 | 应用程序保护 | 文件系统保护 | 由 DBMS 提供完善的安全保护 |
在学习数据库之前,应该先理解什么是数据。描述事物的符号称为数据。数据有多种表现形式,可以是数字,也可以是文字、图形、图像、声音、语言等。在数据库中数据表示记录,例如,在学生管理数据库中,记录学生的信息包括学号、姓名、性别、年龄、籍贯和联系电话等,这些信息就是数据。
数据库(Database)指长期存储在计算机内的、有组织的、可共享的数据集合。通俗的讲,数据库就是存储数据的地方,就像冰箱是存储食物的地方一样。数据库实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作。
数据库管理系统(DBMS)是数据库系统的核心软件之一,是位于用户与操作系统之间的数据管理软件,用于建立,使用和维护数据库。它的主要功能包括数据定义、数据操作、数据库的运行管理、数据库的建立和维护等几个方面。
数据库有两种类型,分别是关系型数据库和非关系型数据库。
关系型数据库
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。简单说,关系型数据库是由多张能互相连接的表组成的数据库。
优点
都是使用表结构,格式一致,易于维护。
使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
数据存储在磁盘中,安全。
缺点
读写性能比较差,不能满足海量数据的高效率读写。
不节省空间。因为建立在关系模型上,就要遵循某些规则,比如数据中某字段值即使为空仍要分配空间。
固定的表结构,灵活度较低。
常见的关系型数据库有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access 和 MySQL 等。
非关系型数据库
非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。
优点
非关系型数据库存储数据的格式可以是 key-value 形式、文档形式、图片形式等。使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
速度快,效率高。NoSQL 可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。
海量数据的维护和处理非常轻松。
非关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势。
可以实现数据的分布式处理。
缺点
非关系型数据库暂时不提供 SQL 支持,学习和使用成本较高。
非关系数据库没有事务处理,没有保证数据的完整性和安全性。适合处理海量数据,但是不一定安全。
功能没有关系型数据库完善。
MySQL 是最流行的数据库之一,是一个免费开源的关系型数据库管理系统,但也不意味着该数据库是完全免费的。MySQL 由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 适合中小型软件,被个人用户以及中小企业青睐。
针对不同的用户,MySQL 分为两个版本:
MySQL Community Server(社区版):该版本是自由下载且完全免费的,但是官方不提供技术支持。
MySQL Enterprise Server(企业版):该版本是收费的,而且不能下载,但是该版本拥有完善的技术支持(官方提供电话技术支持)。
MySQL 的命名机制由 3 个数字和 1 个后缀组成,例如 mysql-5.7.20:
第 1 个数字“5”是主版本号,用于描述文件的格式,所有版本 5 的发行版都有相同的文件夹格式。
第 2 个数字“7”是发行级别,主版本号和发行级别组合在一起便构成了发行序列号。
第 3 个数字“20”是在此发行系列的版本号,随每次新发行的版本递增。通常选择已经发行的最新版本。
MySQL的特点、优势
MySQL 数据库管理系统具有很多的优势,下面总结了其中几种。
MySQL 是开放源代码的数据库
MySQL 是开放源代码的数据库,任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的来使用该数据库。MySQL 是一款可以自由使用的数据库。
MySQL 的跨平台性
MySQL 不仅可以在 Windows 系列的操作系统上运行,还可以在 UNIX、Linux 和 Mac OS 等操作系统上运行。因为很多网站都选择 UNIX、Linux 作为网站的服务器,所以 MySQL 的跨平台性保证了其在 Web 应用方面的优势。虽然微软公司的 SQL Server 数据库是一款很优秀的商业数据库,但是其只能在 Windows 系列的操作系统上运行。因此,MySQL 数据库的跨平台性是一个很大的优势。
价格优势
MySQL 数据库是一个自由软件,任何人都可以从 MySQL 的官方网站上下载该软件,这些社区版本的 MySQL 都是免费试用的,即使是需要付费的附加功能,其价格也是很便宜的。相对于 Oracle、DB2 和 SQL Server 这些价格昂贵的商业软件,MySQL 具有绝对的价格优势。
功能强大且使用方便
MySQL 是一个真正的多用户、 多线程 SQL 数据库服务器。它能够快速、有效和安全的处理大量的数据。相对于 Oracle 等数据库来说,MySQL 的使用是非常简单的。MySQL 主要目标是快速、健壮和易用。
MySQL 与常用的主流数据库 Oracle、SQL Server 相比,主要特点就是免费,并且在任何平台上都能使用,占用的空间相对较小。但是,MySQL 也有一些不足,比如对于大型项目来说,MySQL 的容量和安全性就略逊于 Oracle 数据库。
SQL 是一种操作数据库的语言,包括创建数据库、删除数据库、查询记录、修改记录、添加字段等。SQL 虽然是一种被 ANSI 标准化的语言,但是它有很多不同的实现版本。
ANSI 是 American National Standards Institute 的缩写,中文译为“美国国家标准协会”。
SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。
SQL 是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 MySQL、Oracle、SQL Server、MS Access、Sybase、Informix、Postgres 等,都将 SQL 作为其标准处理语言。
此外,SQL 也有一些变种,就像中文有很多方言,比如:
微软的 SQL Server 使用 T-SQL;
Oracle 使用 PL/SQL;
微软 Access 版本的 SQL 被称为 JET SQL(本地格式)。
SQL 的用途
SQL 之所以广受欢迎,是因为它具有以下用途:
允许用户访问关系型数据库系统中的数据;
允许用户描述数据;
允许用户定义数据库中的数据,并处理该数据;
允许将 SQL 模块、库或者预处理器嵌入到其它编程语言中;
允许用户创建和删除数据库、表、数据项(记录);
允许用户在数据库中创建视图、存储过程、函数;
允许用户设置对表、存储过程和视图的权限。
RDBMS 是 Relational Database Management System 的缩写,中文译为“关系数据库管理系统”,它是 SQL 语言以及所有现代数据库系统(例如 SQL Server、DB2、Oracle、MySQL 和 Microsoft Access)的基础。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database
RDBMS 术语
RDBMS的常见术语:
数据库: 数据库是一些关联表的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
常用数据库:
排名 | 数据库 | 类型 |
---|---|---|
1 | Oracle | 关系型数据库 |
2 | MySQL | 关系型数据库 |
3 | Microsoft SQL Server | 关系型数据库 |
4 | PostgreSQL | 关系型数据库 |
5 | MongoDB | 文档数据库 |
6 | IBM Db2 | 关系型数据库 |
7 | Redis | 键值对(Key-value)数据库 |
8 | Elasticsearch | 搜索和数据分析引擎 |
9 | SQLite | 关系型数据库 |
10 | Microsoft Access | 关系型数据库 |