一、数据库系统概述
数据库(固定6分)
1. 数据库三级模式结构
数据库系统的三级模式结构包括:
- 外模式(External Schema):也称为子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。一个数据库可以有多个外模式。
- 概念模式(Conceptual Schema):也称为模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个概念模式。
- 内模式(Internal Schema):也称为存储模式,是数据物理结构和存储方式的描述。一个数据库只有一个内模式。
对应关系:
- 视图对应 外模式
- 基本表对应 模式
- 存储文件对应 内模式
2. 两级映像与数据独立性
数据库的两级映像保证了数据的独立性:
| 映像 | 独立性类型 | 说明 |
|---|---|---|
| 外模式 / 模式映像 | 逻辑独立性 | 当模式改变时,只需改变外模式/模式映像,外模式保持不变,应用程序不受影响 |
| 模式 / 内模式映像 | 物理独立性 | 当内模式改变时,只需改变模式/内模式映像,模式保持不变,应用程序不受影响 |
二、数据模型
1. 概念模型
概念模型是对现实世界的抽象,最常用的概念模型是 E-R(实体-联系)模型。
E-R模型的三个基本要素:
(1)实体(Entity)
- 客观存在并可相互区别的事物称为实体
- 例如:学生、课程、教师等
(2)联系(Relationship)
- 实体之间的关联关系
- 联系的类型:
- 一对一(1:1)
- 一对多(1:n)
- 多对多(m:n)
(3)属性(Attribute)
- 属性是实体某方面的特性
- 例如:学生的学号、姓名、年龄等
2. 结构模型
结构模型主要包括层次模型、网状模型和关系模型。
三、关系模型
1. 基本术语
- 关系(Relation):一个关系对应一张二维表
- 元组(Tuple):表中的一行,也称为记录
- 属性(Attribute):表中的一列,也称为字段
- 域(Domain):属性的取值范围
- 主键(Primary Key):能唯一标识一个元组的属性或属性组
- 外键(Foreign Key):一个关系中的属性(组)是另一个关系的主键
2. 关系的3种类型
- 基本表:实际存在的表,是实际存储数据的逻辑表示
- 查询表:查询结果对应的表
- 视图表:由基本表或其他视图表导出的虚拟表
3. 关系模式的定义
关系模式是对关系的描述,一般表示为:
R(U, D, DOM, F)
其中:
- R:关系名
- U:组成该关系的属性名集合
- D:属性组U中属性所来自的域
- DOM:属性向域的映像集合
- F:属性间数据的依赖关系集合
四、完整性约束
关系模型的完整性约束包括:
1. 实体完整性
- 主键属性不能取空值
- 保证每个实体都是可区分的
2. 参照完整性
- 外键要么取空值,要么等于被参照关系中某个元组的主键值
- 保证数据的一致性
3. 用户定义完整性
- 针对某一具体应用的数据必须满足的语义要求
- 例如:年龄必须在0~150之间
五、关系代数
关系代数是一种抽象的查询语言,用对关系的运算来表达查询。
1. 基本运算
| 运算 | 符号 | 说明 |
|---|---|---|
| 选择 | σ | 从关系中选择满足条件的元组 |
| 投影 | π | 从关系中选择若干属性列 |
| 并 | ∪ | 两个关系的并集 |
| 差 | − | 两个关系的差集 |
| 笛卡尔积 | × | 两个关系的所有元组组合 |
2. 扩展运算
| 运算 | 符号 | 说明 |
|---|---|---|
| 交 | ∩ | 两个关系的交集 |
| 连接 | ⋈ | 从两个关系的笛卡尔积中选取属性间满足一定条件的元组 |
| 除 | ÷ | 用于包含"全部"语义的查询 |
六、SQL语言
1. SQL特点
- 综合统一:集数据定义、数据操纵、数据控制于一体
- 高度非过程化:用户只需提出"做什么",无需说明"怎么做"
- 面向集合的操作方式
- 以同一种语法结构提供多种使用方式
- 语言简洁,易学易用
2. SQL组成
SQL语言包括四个部分:
| 组成部分 | 说明 |
|---|---|
| 数据定义语言(DDL) | CREATE、DROP、ALTER |
| 数据操纵语言(DML) | SELECT、INSERT、UPDATE、DELETE |
| 数据控制语言(DCL) | GRANT、REVOKE |
| 事务控制语言(TCL) | COMMIT、ROLLBACK |
3. SQL数据定义
SQL数据定义包括对 表、视图、索引 的创建和删除。
索引
数据库中的索引是某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引的作用:
- 加快数据查询速度
- 保证数据的唯一性
- 加速表与表之间的连接
索引分类:
- 唯一索引
- 非唯一索引
- 聚簇索引
- 非聚簇索引
视图
视图是从一个或多个基本表或视图中导出的表,其结构和数据是建立在对表的查询基础上的,是虚拟表。
视图的作用:
- 简化用户的操作
- 使用户能以多种角度看待同一数据
- 对重构数据库提供了一定程度的逻辑独立性
- 能够对机密数据提供安全保护
4. SQL数据查询
SQL的数据操纵功能包括 SELECT(查询)、INSERT(插入)、DELETE(删除)和 UPDATE(修改)。
SELECT 查询
SELECT [ALL | DISTINCT] <目标列表达式> [, ...]
FROM <表名或视图名> [, ...]
[WHERE <条件表达式>]
[GROUP BY <列名> [HAVING <条件表达式>]]
[ORDER BY <列名> [ASC | DESC]];
连接查询
若查询涉及两个以上的表,则称为连接查询。
子查询与聚合函数
常用聚合函数:
- COUNT(*):统计元组个数
- COUNT(列名):统计该列非空值个数
- SUM(列名):计算列值总和
- AVG(列名):计算列值平均值
- MAX(列名):求列值最大值
- MIN(列名):求列值最小值
LIKE 模糊查询
SELECT * FROM 表名 WHERE 列名 LIKE '模式';
%:匹配任意长度的字符串_:匹配单个字符
分组查询
SELECT 列名, 聚合函数(列名)
FROM 表名
GROUP BY 列名
[HAVING 条件];
5. SQL数据更新
INSERT(插入):
INSERT INTO 表名 [(列名1, 列名2, ...)]
VALUES (值1, 值2, ...);
DELETE(删除):
DELETE FROM 表名
[WHERE 条件];
UPDATE(修改):
UPDATE 表名
SET 列名 = 表达式 [, ...]
[WHERE 条件];
6. SQL访问控制
DBMS数据控制的功能包括:
- 授权(GRANT)
- 收回权限(REVOKE)
GRANT 权限列表 ON 对象 TO 用户 [WITH GRANT OPTION];
REVOKE 权限列表 ON 对象 FROM 用户;
评论