第一章
1.①数据(Data):是数据库中存储的基本对象 ②数据库(Database,简称DB):是长期储存在计算机内、有组织的、可共享的大量数据的集合。③ 数据库管理系统(DBMS) :位于用户与操作系统之间的一层数据管理软件。 是基础软件,是一个大型复杂的软件系统
④数据库系统(Database System,简称DBS):在计算机系统中引入数据库后的系统构成
2.数据模型的组成要素:①数据结构 ② 数据操作 ③完整性约束条件
3.最常用的数据模型:①层次模型 ② 网状模型 ③ 关系模型 4.Ⅰ关系模型:关系数据库系统采用关系模型作为数据的组织方式 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
Ⅱ关系数据模型的数据结构:①关系: 一个关系对应通常说的一张表 ②元组: 表中的一行即为一个元组
③属性: 表中的一列即为一个属性,给每一个属性起一个名称即属性名④主码:
表中的某个属性组,它可以唯一确定一个元组 ⑤域:
属性的取值范围。 分量
元组中的一个属性值。
Ⅲ关系模式
:对关系的描述关系名(属性1,属性2,…,属性n)
学生(学号,姓名,年龄,性别,系,年级)关系必须是规范化的,满足一定规范条件
最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,
Ⅳ关系数据模型的操纵与完整性约束数据操作是集合操作,操作对象和操作结果都是关系 查询、插入、删除、更新
数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”关系的完整性约束条件 实体完整性 参照完整性 用户定义的完整性
Ⅴ关系数据模型的优缺点①优点
建立在严格的数学概念的基础上:集合代数。
概念单一
实体和各类联系都用关系来表示 对数据的检索结果也是关系 关系模型的存取路径对用户透明
具有更高的数据独立性,更好的安全保密性 简化了程序员的工作和数据库开发建立的工作②缺点 存取路径对用户透明导致查询效率往往不如非 关系数据模型
为提高性能,必须对用户的查询请求进行优化 增加了开发DBMS的难度
5.数据库系统的三级模式结构:①模式(也称逻辑模式) 数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求②外模式(也称子模式或用户模式)
数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
数据库用户的数据视图,是与某一应用有关的数据的逻辑表示③内模式(也称存储模式)
是数据物理结构和存储方式的描述 是数据在数据库内部的表示方式
6.二级映像:①外模式/模式映像:模式:描述的是数据的全局逻辑结构
外模式:描述的是数据的局部逻辑结构
②模式/内模式映像:
模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。
7.数据库系统的组成:①硬件平台 ②软件:包括数据库管理系统应用程序 ③数据库
④人员:包括数据库管理员、程序员和一般用户 第二章
1.关系模式的含义:关系模式是型 ,关系是值
,关系模式是对关系的描述
定义关系模式关系模式可以形式化地表示为:
R(U,D,DOM,F) R 关系名
U 组成该关系的属性名集合
D 属性组U中属性所来自的域
DOM 属性向域的映象集合
F 属性间的数据依赖关系集合 一般情况下,简写为 R(U) 2.基本的关系操作:①并(Union)
设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。形式定义如下:
R∪S≡{t | t∈R ∨ t∈S},t是元组变量,R和S的元数相同。 R - S
仍为n目关系,由属于R而不属于S的所有元组组成 R -S = { t|tR∧tS } ②笛卡尔积:严格地讲应该是广义的笛卡尔积 R: n目关系,k1个元组 S: m目关系,k2个元组 R×S
列:(n+m)列元组的集合
元组的前n列是关系R的一个元组 两个关系R和S若进行并运算,则它们必须是相容的: 关系R和S必须是同元的,即它们的属性数目必须相同。 对i,R的第i个属性的域必须和S的第i个属性的域相同。 ②交(intersection) 定义
所有同时出现在两个关系中的元组集合。 R∩S ={ r | r∈R ∧r∈S }
交运算可以通过差运算来重写: R∩S = R - (R - S)
R和S必须同类型(属性集相同、次序相同,但属性名可以不同) 3.关系的三类完整性约束的含义:① 实体完整性规则 若属性A是基本关系R的主属性,则属性A不能取空值 例:
SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) POSTGRADUATE:
主码(假设研究生不会重名) 不能取空值 ②参照完整性规则
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值
③用户定义的完整性:针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求
关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能 4.(53页)㈠传统的集合运算:并,差,交,笛卡尔积 ①差:R和S 具有相同的目n
相应的属性取自同一个域
后m列是关系S的一个元组 行:k1×k2个元组
R×S = {tr ts |tr R ∧ tsS }㈡专门的关系运算:自然连接是一种特殊的等值连接
两个关系中进行比较的分量必须是相同的属性组 在结果中把重复的属性列去掉 自然连接的含义
R和S具有相同的属性组B
R ∞ S = { tr⌒ts | tr ∈R∧ts∈ S∧tr[B] = ts[B] }
一般的连接操作是从行的角度进行运算。
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。 第三章
的特点:①综合统一②高度非过程化③面向集合的操作方式④以同一种语法结构提供多种使用方式⑤语言简洁,易学易用 2.基本表的定义和删除 ㈠定义基本表 CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] … [,<表级完整性约束条件> ] );
如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。 ㈡删除基本表 DROP TABLE <表名>[RESTRICT| CASCADE]; RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用 如果存在依赖该表的对象,则此表不能被删除 CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除 3.索引的建立:㈠建立索引的目的:加快查询速度 谁可以建立索引
DBA 或 表的属主(即建立表的人) DBMS一般会自动建立以下列上的索引 PRIMARY KEY UNIQUE 谁 维护索引
DBMS自动完成? 使用索引
DBMS自动选择是否使用索引以及使用哪些索引语句格式 CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
[例14]为学生-课程数据库中的Student,Course,SC三个表建立索引。
CREATE UNIQUE INDEX Stusno ON Student(Sno);
CREATE UNIQUE INDEX Coucno ON Course(Cno);
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);
Student表按学号升序建唯一索引
Course表按课程号升序建唯一索引
SC表按学号升序和课程号降序建唯一索引
4.Ⅰ 插入数据:两种插入数据方式①插入元组②插入子查询结果可以一次插入多个元组 ㈠插入元组:语句格式 INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>] … )
功能
将新元组插入指定表中INTO子句 属性列的顺序可与表定义中的顺序不一致 没有指定属性列 指定部分属性列 VALUES子句
提供的值必须与INTO子句匹配 值的个数 值的类型
[例1] 将一个新学生元组(学号:8;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERT
INTO Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES ('8','陈冬','男','IS',18);
[例2] 将学生张成民的信息插入到Student表中。
INSERT
INTO Student
VALUES (‘6’, ‘张成民’, ‘男’,18,'CS'); ㈡插入子查询结果 语句格式 INSERT
INTO <表名> [(<属性列1> [,<属性列2>… )] 子查询; 功能
将子查询结果插入指定表中
INTO子句(与插入元组类似) 子查询
SELECT子句目标列必须与INTO子句匹配 值的个数 值的类型
[例4] 对每一个系,求学生的平均年龄,并把结果存入数据库。
第一步:建表
CREATE TABLE Dept_age
(Sdept CHAR(15) /* 系名*/ Avg_age SMALLINT); /*学生平均年龄*/ 第二步:插入数据 INSERT
INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;
Ⅱ 修改数据:语句格式 UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]… [WHERE <条件>]; 功能
修改指定表中满足WHERE子句条件的元组SET子句 指定修改方式 要修改的列 修改后取值 WHERE子句 指定要修改的元组