文章目录
- 数据库学习笔记
- 第一篇 基础篇
- 第1章 绪论
- 1.1 数据库系统概论
- 1.1.1 数据库的四个基本概念
- 1.1.2 数据库系统的特点
- 1.2 数据模型
- 1.2.1 数据模型应该满足三方面要求:
- 1.2.2 两类数据模型
- 1.2.3 概念模型
- 1.2.4 数据模型的组成要素
- 1.2.5 层次模型
- 1.2.6 网状模型
- 1.2.7 关系模型
- 1.3 数据库系统的结构
- 1.3.1 数据库系统模式的概念
- 1.3.2 数据库系统的三级模式概念
- 1.3.3 数据库的二级映像功能与数据独立性
- 1.4 数据库系统的组成
- 第2章 关系数据库
- 2.1 关系数据结构及形式化定义
- 2.1.1 关系
- 2.1.2 关系模式
- 2.13 关系数据库
- 2.2 关系操作
- 2.2.1 基本的关系操作
- 2.2.2 关系数据语言的分类
- 2.3 关系的完整性
- 2.3.1 实体完整性
- 2.3.2 参照完整性
- 2.3.3 用户定义的完整性
- 2.4 关系代数
- 2.4.1 传统的集合运算
- 2.4.2 专门的关系运算
- 第3章关系数据库标准语言SQL
- 3.1 SQL概述
- 3.1.1 SQL的产生与发展
- 3.1.2 SQL的特点
- 3.1.3 SQL的基本概念
- 3.2 学生-课程数据库
- 3.3 数据定义
- 3.3.1 模式的定义与删除
- 3.3.2 基本表的定义、删除与修改
- 3.3.3 索引的删除与管理
- 3.3.4 数据字典
- 3.4 数据查询
- 3.4.1 单表查询
- 3.4.2 连接查询
- 3.4.3 嵌套查询
- 3.4.4 集合查询
数据库学习笔记
第一篇 基础篇
第1章 绪论
1.1 数据库系统概论
1.1.1 数据库的四个基本概念
- 数据
- 数据是数据库中存储的基本对象
- 描述事物的符号记录称为数据
- 数据解释是对数据含义的说明,数据的含义称为数据的语义,数据与其语义是不可分的
- 数据库
- 数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可以为各种用户共享。
- 数据库管理系统
- 数据库管理系统是位于用户和操作系统之间的一层数据管理软件,和操作系统一样是计算机的基础软件。
- 数据库管理系统的作用:
- 数据定义功能
- 数据组织、存储和管理
- 数据操纵功能
- 数据库的事务管理和运行管理
- 数据库的建立和维护功能
- 其他功能
- 数据库系统
- 数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统
1.1.2 数据库系统的特点
- 数据结构化
- 数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别
- 整体结构化是指,数据库中的数据不再仅仅针对某一应用,而是面向整个组织或者企业;不仅数据内部是结构化的,而且整体是结构化的,数据之间是有联系的
- 数据的共享性高、冗余度低且易扩充
- 数据共享可以大大减少数据冗余,节约存储空间。数据共享还能避免数据之间的不相容性和不一致性
- 由于数据面向整个系统,是有结构的数据,不仅可以被多个应用共享使用,而且容易增加新的应用,这就使得数据库系统弹性大,易于扩充。
- 数据独立性高
- 数据独立性是借助数据库管理数据的一个显著优点,包括数据的物理独立性和逻辑独立性
- 物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的
- 逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的
- 数据由数据库管理系统统一管理控制:
数据库的共享会带来数据库的安全隐患,而数据库的共享是并发的共享,即多个用户可以同时存取数据库中的数据,甚至可以同时存储数据库中的同一个数据,会带来不同用户间相互干扰的隐患。另外,数据库中数据的正确与一致也必须得到保障。为此,数据库管理系统必须提供以下几方面的数据控制功能。
- 数据的安全性保护
- 数据的完整性检查
- 并发控制
- 数据库恢复
1.2 数据模型
数据模型是对是现实世界数据特征的抽象,是数据库系统的核心和基础,是用来描述数据、组织数据和对数据进行操作的。
1.2.1 数据模型应该满足三方面要求:
- 比较真实地模拟现实世界
- 容易为人所理解
- 便于在计算机上实现
1.2.2 两类数据模型
- 概念模型: 也称为信息模型,按用户的观点对数据和信息建模,主要用于数据库设计
- 逻辑模型和物理模型: 主要包括层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型,是按照计算机系统的观点对数据建模,主要用于数据库管理系统的实现。其中物理模型是对数据最底层的抽象,是面向计算机系统的。
1.2.3 概念模型
基本概念
- 实体:客观存在并可相互区别的事物称为实体,可以是具体的人事物,也可是抽象的概念或联系。
- 属性:实体所具有的某一特性
- 码:唯一标识实体的属性集
- 实体型:用实体名及其属性名集合来抽象和刻画同类实体
- 实体集:同一类型的实体的集合
- 联系:实体之间的联系通常是指不同实体集之间的联系,有一对一、一对多、多对多等多种类型。
- 域
概念模型的一种表示方法:实体-联系方法(E-R方法,E-R模型)
1.2.4 数据模型的组成要素
数据模型是严格定义的一组概念(精确地描述了系统的静态特征、动态特征和完整性约束条件)的集合,通常由数据结构、数据操作和数据的完整性约束条件三部分组成。
- 数据结构:描述数据库的组成对象以及对象之间的联系
- 数据操作:数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括有关操作及有关的操作规则。
- 数据的完整性约束条件:数据的完整性约束条件是一组完整性规则
1.2.5 层次模型
层次模型是数据库系统中最早出现的数据模型,用树形结构来表示各类实体以及实体间的联系
层级模型的数据结构
- 数据库中满足以下两个条件的基本层次联系的集合为层次模型
- 有且只有一个结点没有双亲结点,这个结点称为根结点
- 根以外的其他结点有且只有一个双亲结点
- 层次模型中,每个结点代表一个记录类型,记录类型之间的联系用结点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系
- 任何一个给定的记录值只能按其层次路径查看,没有一个子女记录值能够脱离双亲记录值而独立存在
层次模型的优缺点
- 优点:
- 数据结构简单清晰
- 数据库的查询效率高
- 提供了良好的完整性支持
- 缺点:
- 现实世界中很多联系是非层次性的
- 如果一个结点具有多个双亲结点,用层次模型表示这类数据就很笨拙
- 查询子女结点必须通过双亲结点
- 由于结构严密,层次命令趋于程式化
1.2.6 网状模型
网状模型的数据结构
- 满足以下两个条件的基本层次联系集合称为网状模型
- 允许一个以上的结点无双亲
- 一个结点可以有多于一个的双亲
- 层次模型中子女结点和双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一
网状模型的数据操纵与完整性约束
- 支持记录码的概念,码即唯一标识记录的数据项的集合
- 保证一个联系中双亲记录和子女记录之间是一对多的联系
- 可以支持双亲记录和子女记录之间的某些约束条件
网状模型的优缺点
- 优点
- 能够更为直接地描述现实世界
- 具有良好的性能,存取效率较高
- 缺点
- 结构化比较复杂
- DDL、DML复杂,并且要嵌入某一种高级语言中,用户不容易掌握,不容易使用
- 记录之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,加重了编写应用程序的负担
1.2.7 关系模型
关系模型的数据结构
关系模型与以往的模型不同,是建立在严格的数学概念的基础上的。
关系模型中的一些术语
- 关系:一个关系对应通常说的一张表
- 元组:表中的一行即为一个元组
- 属性:表中的一列即为一个属性
- 码:也称为码键,表中的某个属性组,可以唯一确定一个元组
- 域:是一组有相同的数据类型的值的集合
- 分量:元组中的一个属性值
- 关系模式:对关系的描述,关系模型要求关系必须是规范化的,关系中的每一个分量必须是一个不可分的数据项
关系模型的优缺点
- 优点
- 建立在严格的数学概念的基础上
- 概念单一
- 存取路径对用户隐蔽,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作
- 缺点
- 存取路径隐蔽,查询效率不如格式化数据模型
- 增加了开发数据库管理系统的难度
1.3 数据库系统的结构
1.3.1 数据库系统模式的概念
模式(schema)是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例。同一个模式可以有多个实例。
模式是相对稳定的,而实例是相对变动的
1.3.2 数据库系统的三级模式概念
模式
模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式
外模式
外模式也称子模式或用户模式,是数据库用户能看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集,一个数据库可以有多个外模式
内模式
内模式也称存储模式,一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
1.3.3 数据库的二级映像功能与数据独立性
外模式/模式映像
模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式,对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。
当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像
数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储逻辑之间的对应关系。
当数据库的存储结构改变时,由数据库管理员对模式/内模式映像做出相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性
1.4 数据库系统的组成
第2章 关系数据库
2.1 关系数据结构及形式化定义
2.1.1 关系
- 域:域是一组具有相同数据类型的值的集合
- 笛卡儿积:笛卡儿积是域上的一种集合运算,D1×D2×…×Dn={(d1,d2,…,dn) | di∈Di,i=1,2,…,n}
- 元组:每一个元素(d1,d2,…,dn)叫做一个n元组,或简称元组
- 分量:元素中的每一个值di叫做一个分量
- 基数:一个域允许的不同取值个数称为这个域的基数
- 关系:D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,表示为R(D1,D2…,Dn),这里R表示关系的名字,n是关系的目或度。若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。若一个关系有多个候选码,则选定其中一个为主码。候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性。关系模式的所有属性是这个关系模式的候选码,称为全码。
- 关系的三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表
- 关系的限定和补充:
- 无限关系在数据库系统中是无意义的,限定关系数据模型中的关系必须是有限集合
- 通过为关系的每个列附加一个属性名的方法取消关系属性的有序性
- 基本关系的6条性质:
- 列是同质的
- 不同的列可以出自同一个域,称其中的每一个列为一个属性,不同的属性要给予不同的属性名
- 列的顺序无所谓
- 任意两个元组的候选码不能取相同的值
- 行的顺序无所谓
- 分量必取原子值,即每一个分量都必须是不可分的数据项
2.1.2 关系模式
关系的描述称为关系模式,可以形式化地表示为R(U,D,DOM,F),R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合
2.13 关系数据库
关系数据库也有型和值之分,关系数据库的型也称为关系数据库模式,是对关系数据库的描述,关系数据库模式包括若干域的定义,以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
2.2 关系操作
2.2.1 基本的关系操作
-
关系模式中常用的关系操作包括查询操作和插入、删除修改操作两大部分
-
查询表达能力很强,是关系操作中最主要的部分。查询操作又可分为选择、投影、连接、除、并、差、交、笛卡儿积等
-
选择、投影、并、差、笛卡儿积是5种基本操作
-
关系操作的特点是集合操作方式,即操作的对象和结果都是集合
2.2.2 关系数据语言的分类
2.3 关系的完整性
关系模式中有三类完整性约束:实体完整性、参照完整性和用户自定义的完整性。
2.3.1 实体完整性
- 实体完整性规则:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。所谓空值就是“不知道”或“不存在”或“无意义”的值
- 对于实体完整性规则说明如下:
- 实体完整性规则是针对基本关系而言
- 现实世界中的实体是可区分的,即它们具有某种唯一性标识
- 相应地,关系模型中以主码作为唯一性标识
- 主码中的属性,即主属性不能取空值
2.3.2 参照完整性
- 设F是基本关系R的一个或一组属性,但不是关系R的码,KS是基本关系S的主码。如果F与KS相对应,则称F是S的外码,并称基本关系R为参照关系,基本关系S为被参照关系,或目标关系
- 参照完整性规则:若属性F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须:
2.3.3 用户定义的完整性
用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所设计的数据必须满足的语义要求
2.4 关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询
2.4.1 传统的集合运算
2.4.2 专门的关系运算
第3章关系数据库标准语言SQL
3.1 SQL概述
3.1.1 SQL的产生与发展
1974年由Boyce和Chamberlin提出,最初叫Sequel,并在IBM公司研制的关系数据库管理系统模型System R上实现。
目前没有一个数据库系统能够支持SQL标准的所有概念和特性。
同时,许多软件厂商对SQL基本命令集还进行了不同程度的扩充和修改,又可以支持标准以外的一些功能特性。
3.1.2 SQL的特点
- 综合统一
- 高度非过程化
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语言简洁,易学易用
3.1.3 SQL的基本概念
支持SQL的关系数据库管理系统同样支持关系数据库三层模式结构如下图
3.2 学生-课程数据库
- 学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
- 课程表:Course(Cno,Cname,Cpno,Ccredit)
- 学生选课表:SC(Sno,Cno,Grade)
3.3 数据定义
一个数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。
3.3.1 模式的定义与删除
- 定义模式: CREATE SCHEMA<模式名>AUTHORIZATION<用户名>,若没有指定模式名,那么模式名隐含为用户名。要定义模式必须拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA的权限
定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等
- 删除模式: DROP SCHEMA<模式名>
3.3.2 基本表的定义、删除与修改
-
定义基本表: CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]…[,表级完整性约束条件])
-
数据类型:
-
模式与表: 每一个基本表都属于某一个模式,一个模式包含多个基本表。当定义基本表时有三种方法定义它所属的模式。
- 方法一:表名中明显地给出模式名 CREATE TABLE “S-T”.Student(…)
- 方法二:创建模式语句中同时创建表
- 方法三:设置所属的模式,这样在创建表时表名中不必给出模式名
- show search_path
- SET search_path to
-
修改基本表:
ALTER TABLE <表名>ALTER TABLE <表名>
[ADD [COLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性约束>[RESTRICT|CASCADE]]
[ALTER COLUMN<列名><数据类型>]
-
删除基本表:
DROP TABLE<表名>[RESTRICT|CASCADE]
3.3.3 索引的删除与管理
顺序文件上的索引: 针对按指定属性值升序或降序存储的关系,在该属性上建立一个顺序索引文件,索引文件由属性值和相应的元组指针组成
B+树索引: 将索引属性组织成B+树形式,B+树的叶子节点为属性值和相应的元组指针,具有动态平衡的特点
散列索引: 建立若干个桶,将索引属性按照其散列函数值映射到相应桶中,桶中存储索引属性值和相应的元组指针,具有查找速度快的特点
位图索引: 用位向量记录索引属性中可能出现的值,每个位向量对应一个可能值
关系数据库管理系统在执行查询时会自动选择合适的索引作为存取路径,用户不必也不能显式地选择索引
- 建立索引
CREATE[ UNIQUE ][ CLUSTER ] INDEX<索引名>
ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…);
- 修改索引
ALTER INDEX <旧索引名>RENAME TO<新索引名>
- 删除索引
DROP INDEX<索引名>
3.3.4 数据字典
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。
3.4 数据查询
3.4.1 单表查询
3.4.2 连接查询
3.4.3 嵌套查询
3.4.4 集合查询