资源预览内容
第1页 / 共69页
第2页 / 共69页
第3页 / 共69页
第4页 / 共69页
第5页 / 共69页
第6页 / 共69页
第7页 / 共69页
第8页 / 共69页
第9页 / 共69页
第10页 / 共69页
亲,该文档总共69页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第 2 章 关系数据库, 知 识 点 关系定义、关系术语 关系查询语言 关系模式与函数依赖 难 点 关系运算与关系语言 SQL语言的数据查询 函数依赖与范式,返 回, 要 求 熟练掌握以下内容: 关系定义与相关的术语 关系代数运算与SQL语言 关系模式 函数依赖与范式 了解以下内容: 了解域演算方法及其代表语言 了解第四范式与第五范式,2.1 关系定义,2.1.1 关系定义及其基本术语 1关系定义 设有属性1,2,Ak,其值域分别是 D1,D2,Dk,这些值域中可以有相同的 Di(i=1,2,k),Di的度数为i ,它们构成的 笛卡尔空间D为:,其中(d1,d2,dk)称为一个元组,di (i =1,2,k)称为一个分量(即元素)。D的度 数是各值域度数mi的乘积: 则称D中的任意一个子集D为一个关系,记 为R;其关系框架是由属性i组成的一个有 序集合,记为: D中的任意一个点称为关系R的一个元组, 可表示为: 其中k为关系R的元素数,为R的k元元组变量,此时称R为k元关系。,【例1】 设有值域D1(姓名)=王洪,张江, 吴南,D2(性别)=男,女,D3(年龄)= 28,30,由这三个值域构成的笛卡尔 积D为:,其度数为: M = 322 = 12 即D有12个元组,从其中取出任意一个子集D 就构成了一个关系R: 图2.1 子集D的关系,2. 关系的基本术语 关键字(Key) 候选关键字(Candidate key) 复合关键字(Composite key) 主关键字(Primary key) 外来关键字(Foreign key) 2.1.2 关系的性质,2.2 关系运算与关系语言,2.2.1 关系代数与ISBL语言 1. 关系代数(Relational algebra) 关系代数运算用到的运算符的意义及 其运算级别如下: 集合运算符:、 比较运算符:、 逻辑运算符:、 并运算(Union) 设有同类关系R1、R2,这两个关系的并运算,为: 式中“ ”为并运算符,t为元组变量,并运算后 得到的关系是这两个关系元组的并集,如图 2.3(a)所示,它是一个与R1、R2同类的关系。 差运算(Difference) 设有同类关系R1、R2这两个关系的差运算为: 式中“”为差运算符,t为元组变量。差运算 所得到的是前者减去它与后者有相同的那些 元组后组成的关系,如图2.3(b)所示,,它是一个与R1、R2同类的关系。 交运算(Intersection) 设有同类关系R1、R2,则其相交运算为: 式中“ ”为交运算符,t为元组变量,交运算后 得到的是这两个关系所具有的相同元组组成 关系,如图2.3(c)所示,它是一个与R1、R2 同类的关系。 选择运算(Selection) 设F是一个运算条件,其运算对象是常量或元,组的分量(分量可以是分量名或分量序号),运算符为比较运算符和逻辑运算符。则关系R关于条件F的选择为: 式中“”为选择运算符,经选择运算后所得的 关系是从R中选出满足条件F为真的元组所构 成的与R是同类关系,如图2.3(d)所示。 以上四种并、差、交和选择运算属同类 关系运算,即结果与参与运算的关系都具有 相同的属性列,不同的只是在元组的选取上。, 笛卡儿积(Cartesian product) 设有k1元关系R和k2元关系S,这两个关系的 笛卡儿积为: 式中“”为笛卡儿积运算符,乘积后的关系 是一个k1k2元的新关系。若R关系有n个元 组,S关系有n2个元组,则新关系的元组个数 为nn2个。,图2.2 已知五个关系,图2.3 8种运算结果, 投影(Projection) 设有k元关系R,其元组变量为, 则 关系R在其分量Aj1,Aj2,Ajn(nk,j1,j2,jn为1 到k之间互不相同的整数)上的投影为: 式中“ ”为投影运算符,投影运算后所得的 关系是从关系R中按照j1,j2,jn的顺序取出n列, 再除去重复的元组所组成,是一个以j1,j2,jn 为顺序的n元关系,如图2.3(f)所示。, 连接(Join) 设有k1元关系R和k2元关系S,关系R的第i列和 关系S的第j列的 连接运算为: 式中“ ”为连接运算符, 为比较运算符。 式中“ I j ” 表示按照关系R的第i列与关系S的 第j列之间满足 运算的条件进行连接, 表 示关系R的元组变量 的第i个 分量, 表示关系S的元组变量 的第j个分量。, 除法(Division) 设有k1元关系R和k2元关系S,且k1k2,S (关系S不能是空关系),且关系S的k2个分 量与关系R的(不限定位置的)k2个分量名相 同,这k2个分量应是连续的。则关系R关于S 的商为: 式中“”是除法运算符。除法运算后所得的 关系是一个k1k2元的关系。具体操作是: 在关系R中摘出与关系S有相同部分的元组,,再去掉与S相同的列和重复的元组就得到了新 的关系,如图2.3(I)所示。 【例2】 设有学生(S)、课程(C)、选课 (SC)三个关系如图2.4所示,用关系代数方 法完成下列各题: 试求选修C3,5课程的学生所在的系。 试求至少选修一门先行课2的学生名单。 试求S2学生所选的课程名。 图2.4中的符号说明:S#: 学号;SN: 姓名; SD: 系;SA: 年龄;SG: 成绩;,CN: 课程名;P#: 先行课号。 图2.4 学生、课程与选课关系,解: 设所求关系为R,则求解步骤为: R2 = R1* S 即:,答:选修C3,5课程的学生所在的系为:SC、CI和MA。 设所求关系为PR,则求解步骤为: PR2 = PR1 * SC PR4 = PR3* S 即: 答:至少选修先行课2的学生有B2,C9和 F6。, 设所求关系为RX,则求解步骤为: RX2 = RX1 * SC RX4 = RX3 * C ,答:S2学生所选的课程名为:G、H和J。 【例3】 设有三个关系如图2.5所示,试完成 下列各题: 用自然语言描述下列关系代数式的含义: 写出下列语句的关系代数表达式: 找出所有男学生的学号和年龄。 找出年龄小于22岁且籍贯为上海的所有男,学生的姓名,所学课程的课程号和成绩。 找出陈强所学课程的课程名和相应的成绩。 解: 关系代数式的自然语言的含义如下: 找出籍贯为上海的所有学生的姓名、课程 号和成绩。 找出选修OS课程的学生姓名和成绩以及该 课的任课教师。 找出选修全部课程的学生姓名和年龄。,图2.5 有学籍的关系,图2.5中的符号说明:S#: 学号;SN: 姓 名;SA: 年龄;SE: 性别;NP: 籍贯;C#: 课 程号;SG: 成绩;CN: 课程名;CT: 任课教 师。 关系代数表达式如下: ,2.3 关系查询语言S,2.3.1 数据定义 1. 基本关系定义 CREATE TABLE 基本关系名( 属性名1 类型 NOT NULL ,属性名2 类型 NOT NULL) IN SEGMENT 段名 2关系的扩充 3动态导出关系定义 4索引定义,5删除功能 基本关系的删除 DROP TABLE 基本关系名 导出关系的删除 DROP VIEW 窗口名 索引的删除 DROP INDEX 索引名,【例34】 建立如图2.4所示的S,C和SC关系。 CREATE TABLE S(S# (CHAR(3), NOT NULL),SN (CHAR(2), SD (CHAR(2),SA (SMALLINT) CREATE TABLE C(C# (CHAR(3), NOT NULL),CN (CHAR(2), P# (CHAR(3) CREATE TABLE SC(S# (CHAR(3), NOT NULL),C# (CHAR(3), NOT NULL),SG(CHAR(1),【例35】 在S关系中增加一个SE属性表示学 生的性别。 EXPAND TABLE S ADD FIELD SE(CHAR(1) 【例37】 建立一个按照课程号升序、成绩降 序、学号升序的索引文件。 CREATE CLUSTERING INDEX SCG ON SC(C# ASC,SGDESC,S# ASC) 【例38】 删除已建立的窗口和索引。 DORP VIEW CSC DORP INDEX SCG,2.3.2 数据查询 SELECT 属性名表 FROM 基本关系名 WHERE 条件表达式 GROUP BY 属性名1 HAVING 函数表 达式 ORDER BY 属性名2 ASC / DESC 【例39】查找年龄为22的学生的学号和姓名。 SELECT S,SN FROM S WHERE SA22,【例40】 查询全部学生的年龄,并按大小 进行排序。 SELECT S,SN,SA FROM S ORDER BY SA DESC 【例41】 查询年龄不在19至21岁之间的学 生的学号和姓名。 SELECT S,SN FROM S WHERE SA NOT BETWEEN 19 AND 21,【例42】 查找在CS和CI系中学习的学生姓 名。 SELECT SN FROM S WHERE SD IN ( CS,CI) 【例43】 查询全部学生所选课程的名称和 成绩。 SELECT S,SN,CN,SG FROM S,C,SC WHERE S.SSC.S AND C.C SC.C,【例44】 查出选修CS和C5课程的学生名单。 SELECT SN FROM S WHERE S IN SELECT S FROM SC WHERE CC3 AND CC5,【例45】 找出选修课程名为H和I的学生名 单。 SELECT SN FROM S WHERE S IN SELECT S FROM SC WHERE C IN SELECT C FROM C WHERE CNH AND CNI,【例46】 查找选修2门以下课程的学生姓名。 SELECT S,SN FROM SC,S WHERE S.SSC.S GROUP BY S HAVING COUNT(*)= 2 其中COUNT( )是库函数,COUNT(*) 表示求记录个数,SQL中还有其它的库函数,均可用于条件中。,2.3.3 数据更新 1. 数据修改 修改语句的一般格式为: UPDATE 关系名 SET 属性名1 = 表达式1 ,属性名2 = 表 达式2, WHERE 条件表达式 【例47】 将所有学生的年龄加1。 UPDATE S SET SASA1,【例48】 修改学号为S6的学生姓名为“F8”。 UPDATE S SET SNF8 WHERE SS6 2数据删除 删除语句的一般格式为: DELETE FROM 关系名 WHERE 条件表达式 ,【例49】 删除学号为“S6”的学生数据。 DELETE FROM S WHERE SS6 DELETE FROM SC WHE
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号