上一篇文章我们介绍了什么是SQL,还有部分相关概念,本文我们来介绍关系型数据库管理系统(RDBMS)。
RDBMS 是 Relational Database Management System 的缩写,它是 SQL 语言以及所有现代数据库系统(例如 SQL Server、DB2、Oracle、MySQL 和 Microsoft Access)的基础。
比如我们每个人在大学入学时都会有一个自己的学号,学号对应着我们的学院、专业、姓名等信息,后续我们只需要通过学号就可以查询到这个学生的相关信息。我们也可以通过专业名称查询到这个专业的学生,这些都是依靠这数据之间的关系来实现的。
在关系型数据库中,数据被存储在一种称为表(Table)的数据库对象中,它和 Excel 表格类似,都由许多行(Row)和列(Column)构成。每一行都是一条数据,每一列都是数据的一个属性,整个表就是若干条相关数据的集合。
表是关系型数据库中最常见、最简单的数据存储形式。
示例如下,名为“provice”的信息表:
+----+-----+--------+-----+-------+---------+
| 编码 | 名称| 简称| 地区 | 类别 | 省会 |
+----+--------+--------+-----+--------------+
| 11 | 北京 | 京 | 华北 |直辖市| 不适用 |
| 21 | 辽宁 | 辽 | 东北 | 省 | 沈阳 |
| 31 | 上海 | 沪 | 华东 |直辖市| 不适用 |
| 36 | 江西 | 赣 | 华东 | 省 | 南昌 |
| 45 | 广西 | 桂 | 中南 |自治区| 南宁 |
+----+-----+------+-----+-------+-----------+
每个表都由若干列构成,每一列都称为一个字段(Field),上表 website 所包含的字段有 id、name、url、age、alexa、uv 和 country。
字段用来维护数据表中每一条数据(记录)的特定信息。
与Excel类似,列(Column)是从垂直方向观察表中的数据,它包含了与某个字段相关联的所有信息。如上表中的简称一列,如下所示:
+----------------------------+
| 简称 |
+----------------------------+
| 京 |
| 辽 |
| 沪 |
| 赣 |
| 桂 |
+----------------------------+
数据表中的每一行数据都称为一条记录(Record),有多少行数据就有多少条记录。
字段是从垂直方向看表中的数据,记录是从水平方向看表中的数据。
如上面表中的第四条记录的数据
| 36 | 江西 | 赣 | 华东 | 省 | 南昌 |
字段的取值可以为 NULL,此时意味着该字段是空的,没有任何值,所以 NULL 被称为“空值”。
注意,NULL 和零值不一样,和包含空白符(空格、缩进、换行等)的字段也不一样,NULL 字段是指在添加记录的时候留空的字段,也即不为该字段指定任何值。
约束(Constraint)是指表的数据列必须强行遵守的规则,这些规则用于限制插入表中的数据的值,这样能够确保每份数据的准确定和可靠性。
约束可以是列级别,也可以是表级别;列级约束仅作用于某一列,而表级约束则作用于整张表。
下面是 SQL 常用的一些约束:
约束 | 说明 |
---|---|
NOT NULL | 非空约束,确保列中不能有 NULL 值。 |
DEFAULT | 默认约束,如果未指定值,那么列将提供默认值。 |
UNIQUE | 唯一约束,确保列中所有的值都不相同。 |
PRIMARY KEY | 主键,用来唯一标识数据表中的每一行/记录。 |
FOREIGN KEY | 外键,用于将两个表连接在一起,让两个表的数据保持同步。 |
CHECK | 检查性约束,用于限定列的取值范围。 |
INDEX | 索引,用于快速从数据库中检索或者获取数据。 |
每个 RDBMS 都存在以下几种类别的数据完整性:
设计关系型数据库时,需要遵守一些特定的规范才能设计出合理的数据库,这些规范就称为“范式”,满足不同程度的规范就是不同的范式。范式的目的在于:
以上两点不但能减少数据库占用的存储空间,还能确保数据之间有清晰的逻辑关系。
本文主要介绍了什么是RDBMS,同时介绍了表、字段、列、记录等概念,后续我们将继续介绍具体的SQL语法。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。