一、数据模型
一般地讲,数据模型是严格定义的一组概念的集合,通常由数据结构、数据操作和完整性约束三部分组成。
1.1 数据结构
数据结构描述数据库的组成对象以及对象之间的联系。数据结构是刻画一个数据模型性质最重要的方面。因此在数据库系统中,人们通常按数据结构的类型来命名数据模型。例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。
1.1.1 层次模型
层次模型就是以“上下级”的层次关系来组织数据的一种方式,层次模型的数据结构看起来就像一颗树:
举例:
P21 图1.16和图1.17、图1.18
层次模型的基本特点:任何一个给定的记录值只有按其路径查看时,才能显出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。
1.1.2 网状模型
在现实世界中事务之间的联系更多的是非层次关系的,用层次模型表示非树形结构是很不直接的,网状模型则可以克服这一弊病。
在数据库中,满足以下两个条件的基本层次联系集合称为网状模型:
(1)允许一个以上的结点无双亲
(2)一个结点可以有多于一个的双亲
P26 图1.23 1.24
1.1.3 关系模型
关系数据库系统采用关系模型作为数据的组织方式,是建立在严格的数学概念基础上。
关系模型把数据看作是一个二维表格,任何数据都可以通过行号+列号来唯一确定,它的数据模型看起来就是一个Excel表:
- 关系(Relation):一个关系对应通常说的一张表,如上面的一张表就可以称为一个关系;
- 元祖(Tuple):表中的一行即为一个元祖;
- 属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。如上面的“学号”、"姓名"、“年龄”都是属性;
- 码(Key):也称为码键。表中的某个属性组,它可以唯一确定一个元祖。例如上面的“学号”属性就可以唯一确定一个学生,也就成为本关系的码;
- 域(Domain):属性的取值范围,如人的年龄一般在1~150岁之间,性别的域是“男”或者“女”等;
- 分量:元组中的一个属性的值;
- 关系模式:对关系的描述,一般表示为:关系名(属性1、属性2、...、属性n)
例如,上面的关系可表述为:学生(学号、姓名、年龄、性别、系名、年级)
值得注意的是,关系必须是规范的,满足一定的约束条件。最基本的约束条件: 关系的每一个分量必须是一个不可分的数据项,不允许表中还有表。下面就是一个不规范的关系:
1.2 数据操作
数据操作是指对数据库中各种对象的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。比如对数据库的增、删、改、查等。具体可以参见下面的SQL语言的DDL、DML和DQL。
1.3 完整性约束
完整性约束一共可以包括实体完整性约束、参照完整性约束和用户自定义完整性约束。具体可以参见下面的微博,讲的很好:
https://blog.csdn.net/qq_42884482/article/details/100150177
二、SQL简介
什么是SQL?SQL(Structured Query Language)是结构化查询语言的缩写,用来访问和操作数据库系统。SQL语句既可以查询数据库中的数据,也可以添加、更新和删除数据库中的数据,还可以对数据库进行管理和维护操作。不同的数据库,都支持SQL,这样,我们通过学习SQL这一种语言,就可以操作各种不同的数据库。
虽然SQL已经被ANSI组织定义为标准,不幸地是,各个不同的数据库对标准的SQL支持不太一致。并且,大部分数据库都在标准的SQL上做了扩展。也就是说,如果只使用标准SQL,理论上所有数据库都可以支持,但如果使用某个特定数据库的扩展SQL,换一个数据库就不能执行了。例如,Oracle把自己扩展的SQL称为PL/SQL
,Microsoft把自己扩展的SQL称为T-SQL
。
现实情况是,如果我们只使用标准SQL的核心功能,那么所有数据库通常都可以执行。不常用的SQL功能,不同的数据库支持的程度都不一样。而各个数据库支持的各自扩展的功能,通常我们把它们称之为“方言”。
总的来说,SQL语言定义了这么几种操作数据库的能力:DDL、DML和DQL。
2.1 DDL:Data Definition Language 数据定义语言
DDL允许用户定义数据,也就是创建表、删除表、修改表结构这些操作:
- CREATE - 创建
- ALTER - 修改
- DROP - 删除
- TRUNCATE - 移除
- COMMENT - 注释
- RENAME - 重命名
2.2 DML:Data Manipulation Language 数据操作语言
DML为用户提供添加、删除、更新数据的能力,这些是应用程序对数据库的日常操作:
- SELECT - 查询
- INSERT - 添加
- UPDATE - 更新
- DELETE - 删除
- CALL - 调用
- EXPLAIN - 解释
- LOCK TABLE - 锁,用于控制并发
2.3 DQL:Data Query Language 数据控制语言
DQL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等:
- GRANT - 授权 允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限
- REVOKE - 收回已经授予的权限
- COMMIT - 提交
- SAVEPOINT - 保存点
- ROLLBACK - 回滚
- SET TRANSACTION - 设置当前事务的特性,它对后面的事务没有影响.
三、主流关系数据库
目前,主流的关系数据库主要分为以下几类:
- 商用数据库,例如:Oracle,SQL Server,DB2等;
- 开源数据库,例如:MySQL,PostgreSQL等;
- 桌面数据库,以微软Access为代表,适合桌面应用程序使用;
- 嵌入式数据库,以Sqlite为代表,适合手机应用和桌面程序。
四、参考
1.关系数据库概述 - 廖雪峰的官方网站
2.
数据库的三种模型_彼岸的饭碗的博客-CSDN博客_数据库模型
3.MySQL基础系列之 DDL、DML和DCL的区别与理解_通往架构师的路上的博客-CSDN博客