Chapter 1 数据库系统概述
数据库系统的定义
宏观
微观
- 数据库
- 数据库管理系统
- 数据库管理员
- 应用开发工具
- 应用系统
- 数据库系统用户
数据库系统的特点
- 支持数据共享
- 控制数据冗余
- 数据完整一致
- 数据独立性高
- 支持复杂结构
- 三种数据抽象
- 正确安全可靠
三级抽象与两级映射
三级抽象
两级映射
数据独立性
- 数据库物理模式发生改变时,仅需修改物理模式-逻辑模式映射
- 逻辑模式发生改变时,仅需修改逻辑模式-视图子模式映射
Chapter 2 关系数据库系统
关系数据库的数据结构
- 元组: 用来指代关系表的行,由于关系是元组的集合,所以元组在关系中出现的顺序无关紧要。
- 属性: 用来指代关系表的列,
n
n
n元关系有
n
n
n个属性,列的顺序亦无关紧要。
- 域: 每个允许取值的关系的属性都存在一个集合,称为该属性的域。
- 码:
- 超码:是一个或多个属性的集合,这些属性的组合可以在一个关系中唯一地标识一个元组。
- 候选码:是关系的超码且任意真子集都不能成为
R
R
R的超码。
- 主码:被数据库设计者选中的、主要用来在一个关系中区分不同元组的候选码。
- 外码:如果一个关系中的一个属性是另外一个关系中的主码,则这个属性是外码。
完整性约束规则
- 实体完整性约束: 如果
A
A
A是关系模式
R
(
U
)
R(U)
R(U)的主属性(主码上的属性),则
A
A
A不能取空值。
- 参照完整性约束: 在参照关系中任意元组在特定属性上的取值必然
等于被参照关系中某个元组在特定属性上的取值。 - 用户自定义完整性约束: 比如定义某个属性的取值范围是0~100。
关系代数
六种基本操作符
- 选择(select):
σ
\sigma
σ
- 投影(project):
π
\pi
π
- 并(union):
∪
\cup
∪
- 差(difference):
−
-
−
- 笛卡尔积(Cartesian product):
×
\times
×
- 重命名(rename):
ρ
\rho
ρ
Chapter 3 结构化查询语言SQL
SQL语言的组成
- 数据定义语言(DDL)
- 数据操纵语言(DML)
- 完整性(integrity)
- 视图定义(view definition)
- 事务控制(transaction control)
- 嵌入式SQL和动态SQL(embedded SQL and dynamic
SQL) - 授权(authorization)
SQL语言数据定义
关系定义
CREATE TABLE <关系名>
(<属性名1> <属性类型1>,
...,
<属性名n> <属性类型n>,
<完整性约束1>,
...,
<完整性约束k>);
视图定义
CREATE VIEW <关系名> as
SELECT ... FROM ... WHERE ...;
完整性约束的SQL语言表示
PRIMARY KEY(A1,A2,..An)
:声明属性(
A
1
A_{1}
A1,
A
2
A_{2}
A2,…
A
n
A_{n}
An)构成关系的主码,主码属性必须是非空且唯一的。FOREIGN KEY(A1,A2,..An) REFERENCES s
: 声明表示关系中任意元组在属性(
A
1
A_{1}
A1,
A
2
A_{2}
A2,…
A
n
A_{n}
An)上的取值必须对应于关系s中某元组在主码属性上的取值。NOT NULL
:在该属性上不允许为空值。
SQL语言查询
单(多)关系查询
SELECT ... FROM ... WHERE ...;
SELECT * FROM ... WHERE ...;
分组聚集
SELECT ..., func(...)
FROM ...
WHERE ...
GROUP BY ...;
SQL数据修改
删除
DELETE FROM ... WHERE ...;
插入
INSERT INTO ... VALUES(...);
INSERT INTO ... SELECT ... FROM ... WHERE ...;
更新
UPDATE ... SET ... = ... WHERE ...;