第一章 绪论
数据库(DB):长期储存在计算机内、有组织的、可共享的大量数据集合 数据库管理系统(DBMS):位于用户与操作系统之间的数据管理软件(系统软件)。 数据库系统(DBS):在计算机系统中引入数据库后的系统。
数据管理技术的发展过程
人工管理阶段(40年代中--50年代中) 文件系统阶段(50年代末--60年代中) 数据库系统阶段(60年代末--现在)
物理独立性:用户的应用程序与磁盘上的数据库中数据是相互独立的。
当数据的物理存储改变了,应用程序不用改变。
逻辑独立性:用户的应用程序与数据库的逻辑结构是相互独立的。
数据的逻辑结构改变了,用户程序也可以不变。
数据模型的组成要素:
数据结构:对系统静态特性的描述 数据操作 :对系统动态特性的描述 数据的约束条件
模式(Schema):数据库中全体数据的逻辑结构和特征的描述
外模式(子模式、用户模式):数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
内模式(也称存储模式):数据物理结构和存储方式的描述 外模式/模式映象:保证数据的逻辑独立性 模式/内模式映象:保证数据的物理独立性
数据库系统的组成:数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理
员、(用户)
数据库管理员(DBA)
(1)决定数据库中的信息内容和结构 (2)决定数据库的存储结构和存取策略
(3)定义数据的安全性要求和完整性约束条件 (4)监控数据库的使用和运行
周期性转储数据库、故障恢复、监视审计文件 (5)数据库的改进和重组 性能监控和调优、数据重组 (6)数据库重构
第三章 关系数据库标准语言SQL
SQL的特点 1. 综合统一 2. 高度非过程化
3. 面向集合的操作方式
4. 以同一种语法结构提供两种使用方法(自含式语言(交互式)/嵌入式语言(宿主式))
5. 语言简洁,易学易用
表3.1 SQL语言的动词 SQL 功 能 数 据 定 义 数 据 查 询 数 据 操 纵 数 据 控 制 动 词 CREATE,DROP,ALTER SELECT INSERT,UPDATE,DELETE GRANT,REVOKE
定义基本表
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ] ? [,<表级完整性约束条件> ] );
修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ]
[ ALTER COLUMN <列名> <数据类型> ];
删除基本表
DROP TABLE <表名> [RESTRICT|CASCADE];
建立索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]?);
删除索引
DROP INDEX <索引名>;
查 询
SELECT [ALL|DISTINCT] <目标列表达式>
[,<目标列表达式>] ? FROM <表名或视图名>[, <表名或视图名> ] ?
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ];
插入单个元组 INSERT
INTO <表名> [(<属性列1>[,<属性列2 >?)]
VALUES (<常量1> [,<常量2>] ? )
插入子查询结果 INSERT
INTO <表名> [(<属性列1> [,<属性列2>? )] 子查询;
[例3] 对每一个系,求学生的平均年龄,并把结果存入数据库。
第一步:建表
CREATE TABLE Deptage
(Sdept CHAR(15) /* 系名*/ Avgage SMALLINT); /*学生平均年龄*/ 第二步:插入数据 INSERT
INTO Deptage(Sdept,Avgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;
修改数据
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]? [WHERE <条件>];
删除数据 DELETE
FROM <表名> [WHERE <条件>];
建立视图
CREATE VIEW
<视图名> [(<列名> [,<列名>]?)] AS
<子查询>
[WITH CHECK OPTION];
授 权
GRANT <权限>[,<权限>]... [ON <对象类型> <对象名>] TO <用户>[,<用户>]... [WITH GRANT OPTION];
收回权限
REVOKE <权限>[,<权限>]... [ON <对象类型> <对象名>] FROM <用户>[,<用户>]...; 角色的创建
CREATE ROLE <角色名>
全称量词和逻辑蕴含等价实现:
[例43] 查询选修了全部课程的学生姓名。
即查询这样的学生,没有一门课程是他不选修的。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM Course
WHERE NOT EXISTS (SELECT * FROM SC
WHERE Sno= Student.Sno AND Cno= Course.Cno);
[例44] 查询至少选修了学生95002选修的全部课程的学生号码。
不存在这样的课程y,学生95002选修了y,而学生x没有选。
SELECT DISTINCT Sno FROM SC SCX
WHERE NOT EXISTS
(SELECT * FROM SC SCY
WHERE SCY.Sno = ' 95002 ' AND NOT EXISTS (SELECT * FROM SC SCZ
WHERE SCZ.Sno=SCX.Sno AND
SCZ.Cno=SCY.Cno));
不相关子查询
相关子查询
常用完整性约束
实体完整性约束: PRIMARY KEY 参照完整性约束: FOREIGN KEY 用户定义的完整性约束 唯一性约束:UNIQUE 非空值约束:NOT NULL 检查性约束:CHECK
a%b表示以a开头,以b结尾的任意长度的字符串 a_b表示以a开头,以b结尾的长度为3的任意字符串
违约处理策略 拒绝操作 NO ACTION 级联操作 CASCADE 置空值 SET NULL 置缺省值 SET DEFAULT
聚簇索引:在一个基本表上最多只能建立一个聚簇索引
对于经常更新的列不宜建立聚簇索引
数据控制:安全性控制、完整性控制、并发控制、恢复
第四章 数据库安全性
数据库安全性控制的常用方法:用户标识和鉴定、存取控制(自主存取控制、强制存取控制)、 视图、审计、密码存储
第六章关系数据理论
数据库设计:数据库概念设计(ER模型) 、数据库逻辑设计(规范化理论) 、数据库物理设计
函数依赖
定义6.1
R中的任意两个元组,若X值相等,Y也相等,则X→Y。 X、Y之间是m-1联系(包括1-1)。 X称为决定因素。
若X→Y,并且Y→X, 则记作:X←→Y。 若Y不函数依赖于X, 则记作:X→Y。
如果X→Y,但Y X, 则称X→Y是平凡的函数依赖 如果X→Y,但Y X,则称X→Y是非平凡的函数依赖
完全函数依赖与部分函数依赖
定义6.2