1、关系数据库与SQL语言目 录 第1章 数据库基础 第2章 关系库的基本理论 第3章 数据库设计 第4章 Transact-SQL语言和SQL SERVER 2008 第5章 数据库和表的创建 第6章 数据库的查询和视图 第7章 存储过程和触发器 第8章 数据库应用实战上堂课内容回顾上堂课内容回顾关系模型的基本术语:关系模型的基本术语:关系、元组、属性、域、分量关系、元组、属性、域、分量 关系模式关系模式 候选码、主码、外码(重点)候选码、主码、外码(重点)关系完整性:关系完整性:实体完整性(重点)实体完整性(重点)参照完整性(重点参照完整性(重点)用户自定义完整性用户自定义完整性本堂课内容本堂
2、课内容 2.3 关系代数关系代数 2.3.1 传统的集合运算(重点传统的集合运算(重点)2.3.2 专门的关系运算专门的关系运算(重点,难点重点,难点)2.3 关系代数关系代数 关系代数关系代数 关系代数是一种抽象的查询语言,是关系数关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。据操纵语言的一种传统表达方式。关系代数以一个或两个关系为输入,产生一关系代数以一个或两个关系为输入,产生一个新的关系作为其操作结果个新的关系作为其操作结果 关系操作关系操作 关系操作关系操作 关系的基本数据操作包括四种:关系的基本数据操作包括四种:数据查询数据查询 数据更新数据更新(数据插入,数据
3、删除,数据修改)(数据插入,数据删除,数据修改)如用关系代数来表示关系的操作,可以有选择如用关系代数来表示关系的操作,可以有选择、投影、连接、除、交、差、并、积等。、投影、连接、除、交、差、并、积等。关系代数的运算符关系代数的运算符选择选择投影投影连接连接除除非非与与或或 逻辑运算逻辑运算符符选择选择投影投影连接连接除除专门的关专门的关系运算符系运算符含义含义运算符运算符含义含义运算符运算符含义含义运算符运算符含义含义运算符运算符大于大于大于等于大于等于小于小于小于等于小于等于等于等于不等于不等于比比较较运运算算符符交交笛卡尔积笛卡尔积大于大于小于小于等于等于并并差差-集集合合运运算算符符含义
4、含义运算符运算符含义含义运算符运算符含义含义运算符运算符含义含义运算符运算符2.3.1 基本关系运算基本关系运算-合并运算合并运算 设有两个关系设有两个关系R和和S,它们具有相同的结构。,它们具有相同的结构。合并运算:合并运算:R S R和和S的并是由属于的并是由属于R或属于或属于S的元组组成的集合,的元组组成的集合,运算符为运算符为。记为记为TRS。2.3.1 基本关系运算基本关系运算-合并运算合并运算ABCa1 a1a2b2 b3 b2c2c2c1ABCa1 a1a2b1 b2 b2c1c2c1 R SABCa1 a1a2a1b1 b2 b2 b3c1c2c1 c2 RS 2.3.1基本关
5、系运算基本关系运算-交集运算交集运算 交运算:交运算:RS R和和S的交是由既属于的交是由既属于R又属于又属于S的元组组成的元组组成的集合,运算符为的集合,运算符为。记为记为TRS。2.3.1 基本关系运算基本关系运算-交集运算交集运算ABCa1 a1a2b2 b3 b2c2c2c1ABCa1 a1a2b1 b2 b2c1c2c1 R SABCa1a2b2 b2 c2c1 R S 2.3.1 基本关系运算基本关系运算-求差运算求差运算 求差运算:求差运算:R S R和和S的差是由属于的差是由属于R但不属于但不属于S的元组组成的元组组成的集合,运算符为的集合,运算符为.记为记为TRS。RSR(R
6、 S)。)。2.3.1 基本关系运算基本关系运算-求差运算求差运算ABCa1 a1a2b2 b3 b2c2c2c1ABCa1 a1a2b1 b2 b2c1c2c1 R SABCa1 b1 c1 R S 2.3.1 基本关系运算基本关系运算-乘积运算乘积运算 乘积运算:乘积运算:R1R2 两个关系的乘积运算是两个关系框架的合并两个关系的乘积运算是两个关系框架的合并,是两个关系元祖的连串,运算符为,是两个关系元祖的连串,运算符为。记为记为TRS。2.3.1 基本关系运算基本关系运算-乘积运算乘积运算ABCa1 a1a2b2 b3 b2c2c2c1ABCa1 a1a2b1 b2 b2c1c2c1 R
7、 SABCABCa1 a1 a1 a1 a1 a1a2 a2 a2b1 b1 b1 b2 b2 b2 b2 b2 b2 c1 c1 c1c2c2c2c1 c1 c1 a1 a1a2 a1 a1a2 a1 a1a2b2 b3 b2b2 b3 b2b2 b3 b2c2c2c1 c2c2c1 c2c2c1 RS 2.3.2 专门的关系运算选择(selection)投影(projection)连接(join)除(division)(选学)以下为了叙述方便,先引入几个记号2.3.2 专门的关系运算(1)分量 设有关系模式R(A1,A2,An),它的一个关系设为R,tR表示t是R的一个元组,tAi则表示元
8、组t中相应于属性Ai的一个分量(2)属性列或域列 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或域列 例如:存在关系模式 教师(编号,姓名,职称)编号姓名职称001肖正教授002李玲副教授2.3.2 专门的关系运算(3)元组的连接 R为n目关系,S为m目关系。设trR,tsS,则trts称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。编号姓名职称001肖正教授002李玲副教授编号电话办公室0012199210B-1010022199201B_102RS2
9、.3.2 专门的关系运算(4)象集 给定一个关系R(X,Z),X和Z为属性组.当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|t R,tX=x 它表示R中属性组X上值为x的元组在Z上分量 如右例所示:a1的象集为(b1,c2),(b2,c3),(b2,c1)例如R:A B C a1 b1 c2 a2 b3 c7 a3 b4 c6 a1 b2 c3 a4 b6 c6 a2 b2 c3 a1 b2 c1 2.3.2 基本关系运算基本关系运算-选择运算选择运算 选择运算:选择运算:F(R)从一个表中选出所有满足给定条件的记录从一个表中选出所有满足给定条件的记录(行行),选出选出的
10、记录构成一个新表的记录构成一个新表,其关系模式与原表相同其关系模式与原表相同.选择运算是从关系选择运算是从关系R中选取使逻辑表达式中选取使逻辑表达式F为真的为真的元组,元组,是从行的角度进行的运算是从行的角度进行的运算学学 号号Sno姓姓 名名Sname性性 别别Ssex年年 龄龄Sage所所 在在 系系Sdept95001李勇李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCT1数据库数据库542数学数学 23信息系统信息系统144操作系统操作系统635数据结构数据结
11、构746数据处理数据处理 27PASCAL语言语言64学学 号号课课 程程 号号成成 绩绩SnoCnoScore9500119295001285950013889500229095002380图2-3 学生-课程数据库SCSC例2-3 查询信息系(IS系)全体学生 Sdept=IS(S)或 5=IS(S)结果:SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95004张立张立男男19IS例2-4 查询年龄大于19岁的学生 Sage 19(S)结果:snosnamesexsageSdept200801张民男20CS2.3.2 基本关系运算基本关系运算-投影运算投影运算 投
12、影运算:投影运算:A1,A2,An(R)从给定的属性集中选择若干属性构成新表的属性从给定的属性集中选择若干属性构成新表的属性,而给定表的记录在这些属性上的值保持不变而给定表的记录在这些属性上的值保持不变.新表的属性集是原表属性集的真子集新表的属性集是原表属性集的真子集.这这是从列的角度进行的运算是从列的角度进行的运算,相当于对关系进行,相当于对关系进行垂直分解。垂直分解。例 查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影Sname,Sdept(Student)或 2,5(Student)结果:2.3.2 基本关系运算基本关系运算-自然连接自然连接 自然连接运算:
13、自然连接运算:R1R2 自然连接是一种特殊的等值连接,它要求两个关系中进自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。复的属性列去掉。例例:Student SC SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,SCORE FROM S,SC WHERE Student.Sno=SC.Sno2.3.2 基本关系运算基本关系运算-自然连接自然连接CDEc1c2c3d2 d3 d2e2e2e1ABCa1 a2a3b1 b2 b2c1c2c1 R
14、TABCDEa1 a2a3 b1 b2 b2 c1 c2 c1d2 d3d2 e2e2 e2 R T 一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。ABRS 例关系R和关系S 如下所示:一般连接 的结果如下:例关系R和关系S 如下所示:例关系R和关系S 如下所示:例关系R和关系S 如下所示:自然连接 R S的结果如下:等值连接 R S 的结果如下:R.B=S.B 外连接 如果把舍弃的元组舍弃的元组也保存在结果关系中,而在其他属 性上填空值(Null),这种连接就叫做外连接(OUTER JOIN)。左外连接 如果只把左边关系R中要舍弃的元组保留就
15、叫做左外连接(LEFT OUTER JOIN或LEFT JOIN)右外连接 如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHT OUTER JOIN或RIGHT JOIN)。例关系R和关系S 如下所示:除(Division)(选学内容)给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R 中的Y 与S 中的Y 可以有不同的属性名,但必须出自相同的域集。R 与S 的除运算得到一个新的关系P(X)P(X),P 是R R 中满足下列条件的元组在中满足下列条件的元组在X X 属性列上的属性列上的投影投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:R S=tr X|
16、tr R Y(S)Yx Yx:x在R 中的象集,x=trX 除操作是同时从行和列角度进行运算 RS例设关系R、S分别为下图的(a)和(b),RS的结果为图(c)分析 在关系R中,A可以取四个值a1,a2,a3,a4 a1的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为(b3,c7),(b2,c3)a3的象集为(b4,c6)a4的象集为(b6,c6)S在(B,C)上的投影为 (b1,c2),(b2,c1),(b2,c3)只有a1的象集包含了S在(B,C)属性组上的投影 所以 RS=a1 “除”的实际含义:有一个现实意义的集合,希望在另一个集合中找出“包含”该集合的元组集 例,找
17、出选修了所有课程的学生“所有课程”“学生”“学生”“所有课程”例,找出选修了所有张三所选课的学生“张三所选课”“学生”“学生”“张三所选课”综合举例 以学生以学生-课程数据库为例课程数据库为例例 查询至少选修1号课程和3号课程的学生号码 首先建立一个临时关系K:然后求:Sno,Cno(SC)K Cno 1 3先对先对SC关系在关系在Sno和和Cno属性上投影,然后对其中每个元组属性上投影,然后对其中每个元组逐一求出每一学生的象集,并依次检查这些象集是否包含逐一求出每一学生的象集,并依次检查这些象集是否包含K。例 查询选修了全部课程的学生号码和姓名。Sno,Cno(SC)Cno(Course)Sno,Sname(Student)例 查询至少选修了一门其直接先行课为5号课程的学生姓名 Sname(Cpno=5(Course SC Student)或或 Sname(Cpno=5(Course)SC Sno,Sname(Student)或或 Sname(Sno(Cpno=5(Course)SC)Sno,Sname(Student)本章小结 关系代数关系代数 交、差、并、积交、差、并、积 选择、投影、连接、除选择、投影、连接、除