数据库
简单的说就是:高效的存储和处理数据的介质(主要分为磁盘和内存两种)。
根据数据库存储介质的不同,可以将其分为两类,即:关系型数据库(SQL)和非关系型数据库(NoSQL,Not Only SQL)。
- 关系型数据库:
大型:Oracle、DB2 等;
中型:SQL Server、MySQL 等;
小型:Access 等。 - 非关系型数据库:
Memcached、MongoDB 和 Redis 等。 - 两者区别:
- 关系型数据库:
1、安全,其将数据保存到磁盘之中,基本不可能出现丢失数据的情况;
2、比较浪费空间,因为其用二维表的形式存储数据。 - 非关系型数据库:
1、存储数据的效率比较高;
2、不是特别安全,突然断电时会导致数据丢失。
关系型数据库:是一种建立在关系模型(数学模型)上的数据库。
关系模型是一种所谓建立在关系上的模型,其包含三个方面,分别为:
- 数据结构:数据存储的形式,二维表(行和列);
- 操作指令集合:所有的 SQL 语句;
- 完整性约束:表内数据约束(字段与字段)和表与表之间的约束(外键)。
设计
- 数据库:从需要存储的数据需求中分析,如果是一类数据(实体),则应该设计成二维表;
- 二维表:由表头(字段名,用来规定数据的名称)和数据(实际存储的内容)部分组成。
注意: 如果表中对应的某个字段值为空,但是系统依然会为其分配存储空间,这也就是关系型数据库比较浪费空间的原因!
关键字说明:
- DB:Database,数据库;
- DBMS:Database Management System,数据库管理系统;
- DBS:Database System = DBMS + DB,数据库系统;
- DBA:Database Administrator,数据库管理员。
- 行\记录:row\record,本质都是指表中的一行(一条记录),行是从结构角度出发,记录则是从数据角度出发。
- 列\字段:column\field,本质都是指表中的一列(一个字段),列是从结构角度出发,字段则是从数据角度出发。
关于SQL
SQL:Structured Query Language,结构化查询语言(数据以查询为主,99% 都是在进行查询操作)。
SQL 主要分为三种:
- DDL:Data Definition Language,数据定义语言,用来维护存储数据的结构(数据库、表),代表指令为create、drop和alter等。
- DML:Data Manipulation Language,数据操作语言,用来对数据进行操作(表中的内容)代表指令为insert、delete和update等,不过在 DML 内部又单独进行了一个分类,即 DQL(Data Query Language),数据查询语言,代表指令为select.
- DCL:Data Control Language,数据控制语言,主要是负责(用户)权限管理,代表指令为grant和revoke等。
SQL 是关系型数据库的操作指令,是一种约束,但不强制,因此这意味着:不同的数据库产品(如 Oracle 和 MySQL)内部可能会有一些细微的区别。
RDBMS 术语
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。