数据库关系代数表达式学习资料
数据库关系代数
例题
• 设一个关系模式为R(A,B,C),对应的关系内容为 R={{1,10,50}, {2,10,60}, {3,20,72}, {4,30,60}}, 则ПB(δC<70(R))的运算结果中包含有________ 个元组,每个元组包含有________个分量。 设有以下关系模式 Student(sno,sname,sage,ssex,sdept) Course(cno,cname,ccredit,teacher) S-c(sno,cno,grade) • 检索程军老师所授课程的课号与课名 • 检索年龄大于21岁的男生学生的学号与姓名
连接(续)
等值连接 R
S 的结果如下:
R.B=S.B
自然连接 R
S的结果如下:
连接(续)
一般连接: R S的结果如下:
C<E
2.2关系代数
二、专门的关系运算
3。连接
例:Student(sno,sname,sex,sclass) SC(sno,cno,grade) Course(cno,cname,credit)
2.1 关系数据结构及形式化定义 5。关系数据库
–在一个给定的应用领域中,所有关系的集合构成一个 关系数据库
• 关系数据库的型与值
–关系数据库的型:关系数据库模式
对关系数据库的描述。
–关系数据库的值 : 关系模式在某一时刻对应的关系的
关系代数讲解与例题
关系代数
关系代数是关系数据库系统查询语言的理论基础。
关系代数的9种操作:
并、交、差、乘、选择、投影、联接、除、自然联接运算。
五个基本操作:
选择(π)
并(∪) 差(-)
笛卡尔积(×)投影(σ) 选择
四个组合操作:
交(∩) 联接(等值联接)自然联接(RS) 除法(÷)
关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
关系代数(演算)要求掌握各种语句的应用,多做书中的例题可以帮助自己熟能生巧。
关系代数表达式举例
用关系代数表示数据查询的典型例子
[例]设教学数据库中有3个关系:
学生关系S(SNO,SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
下面用关系代数表达式表达每个查询语句。
(1) 检索学习课程号为C2的学生学号与成绩。
πSNO,GRADE(σCNO='C2'(SC))
(2) 检索学习课程号为C2的学生学号与姓名
πSNO,SNAME(σCNO='C2'(SSC))
由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。
此查询亦可等价地写成:
πSNO,SNAME(S)(πSNO(σCNO='C2'(SC)))
这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。
(3)检索选修课程名为MATHS的学生学号与姓名。
关系代数表达式总结-数据库
关系代数表达式总结
一、并
例1 求选修了课程号为1或2的课程的学生学号。
分析:可以先求出选修了课程号为1的课程的学生学号,再求出选修了课程号为2的课程的学生学号,最后使用并运算的方法求出选修课程号为1或2的课程的学生学号.本例也可以使用或条件来表示。
πSno(σCno=’1’(SC))∪πSno(σCno='2’(SC))或πSno(σCno=’1'∨ Cno='2’(SC))
二、交
例2 检索至少选修课程号为2和3的课程的学生学号。
分析:
方法一:只涉及到一个表,但不能直接用∧(为什么?)
特别注意,本例不能写为:
πSno(σCno=’2’∧ Cno=’3’(SC))
因为选择运算为行运算,在同一行中Cno不可能既为2,又为3。
第一步:转换(SC×SC)
笛卡尔积将垂直的条件展开为水平的条件。
SC1 SC2
选修课程号为2和3的学生:
σ1=4∧2=’2’∧ 5=’3’(SC×SC)
最后取出学生的学号:
π1(σ1=4∧2=’2'∧ 5=’3'(SC×SC))
方法二:πSno(σCno=’2’(SC))∩πSno(σCno=’3’(SC))
三、差
例3 将学生信息(‘95001’,’李勇’,‘男’,20,‘CS’)从Student表删除。
分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。
因此,该删除操作可表示为:
Student-{‘95001’,’李勇',‘男’,20,‘CS’}
注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。
例4 求没有选修课程号为2的课程的学生学号。
关系数据库关系代数运算
但许多关系数据库产品没有遵循这一性质,例如 Oracle,FoxPro等都允许关系表中存在两个完全相同 的元组,除非用户特别定义了相应的约束条件
举例
行的顺序无所谓,行的次序可以任意交换
遵循这一性质的数据库产品(如ORACLE),插 入一个元组时永远插至最后一行
关系数据库的型称为关系数据库模式,是对关系数据 库的描述
• 若干域的定义 • 在这些域上定义的若干关系模式
关系数据库的值是这些关系模式在某一时刻对应的关 系的集合,通常简称为关系数据库
课堂思考
给出导师、学生、专业三个实体可能组成 的关系数据库及其概念模型(ER图)
2.3 关系的完整性
实体完整性
外码说明
关系R和S不一定是不同的关系 目标关系S的主码Ks 和参照关系的外码F必
须定义在同一个(或一组)域上 关于取名
外码并不一定要与相应的主码同名 当外码与相应的主码属于不同关系时,往往取
相同的名字,以便于识别
参照完整性举例
例1:学生实体与专业实体间的关系: 外码 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名)
请将例子表示为二维表
例2.已知三个域
D1=导师集合={张清正,刘逸} D2=专业集合={计算机,信息} D3=学生集合={李勇,刘晨,王敏}
数据库关系代数表达式学习
数据库关系代数表达式学习
关系代数是关系数据库系统查询语言的理论基础
一、关系代数的9种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
五个基本操作:
并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)
四个组合操作:
交(∩)、联接(等值联接)、自然联接(R S)、除法(÷)
注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
二、关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
三、举例说明:
设教学数据库中有3个关系:
学生关系S(SNO, SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
(1) 检索学习课程号为C2的学生学号与成绩
------------------------------------
SELECT SNO,GRADE
FROM SC
WHERE CNO='C2'
------------------------------------
π SNO, GRADE (σ CNO='C2' (SC))
************************************
(2) 检索学习课程号为C2的学生学号与姓名
------------------------------------
用关系代数式表示查询语句
用关系代数式表示查询语句
关系代数式用于表示数据库查询语句,以下是一些常见的关系代数式:
1. 选择(Select):σ<条件>(关系)表示从关系中选择符合条件的元组。
例如,σ年龄>18 (学生) 表示选择学生关系中年龄大于18的学生。
2. 投影(Project):π<属性列表>(关系)表示从关系中选择指定的属性。
例如,π姓名, 年龄 (学生) 表示选择学生关系中的姓名和年龄属性。
3. 连接(Join):ρ属性名1.属性名2(关系1 ⨝条件关系2)表示根据条件连接两个关系的元组。
例如,ρS.学号(E ⨝ S.学号=E.学号) 表示根据学号将学生和成绩关系连接起来,得到学生关系中每个学生的成绩。
4. 自然连接(Natural Join):ρ属性名(关系1 ⨝关系2)表示根据两个关系的公共属性自动连接。
例如,ρS(E ⨝ S) 表示根据学号连接学生和成绩关系,得到学生关系中每个学生的成绩。
5. 差集(Difference):关系1 - 关系2表示关系1中去除与关系2中相同元组的结果。
例如,学生 - 选课表示去除已选课学生的学生关系。
6. 笛卡尔积(Cartesian Product):关系1 ×关系2表示关系1和关系2的所有可能组合。
例如,学生 ×选课表示学生关系和选课关系的笛卡尔积。
这些关系代数式可以组合使用,构建复杂的查询语句。
数据库关系代数
数据库关系代数
关系代数是关系数据库系统查询语⾔的理论基础
⼀、关系代数的9种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、⾃然联接等操作。
五个基本操作:
并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)
四个组合操作:
交(∩)、联接(等值联接)、⾃然联接(R S)、除法(÷)
注2:等值连接表⽰先做笛卡尔积(×)之后,对相应列进⾏选择或等值关联后的结果(仅筛选⾏、不筛选列)
注2:⾃然连接表⽰两个关系中若有相同名称的属性,则⾃动作为关联条件,且仅列出⼀列⼆、关系代数表达式:
由关系代数运算经有限次复合⽽成的式⼦称为关系代数表达式。这种表达式的运算结果仍然是⼀个关系。可以⽤关系代数表达式表⽰对数据库的查询和更新操作。
三、举例说明:
设教学数据库中有3个关系:
学⽣关系S(SNO, SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
(1) 检索学习课程号为C2的学⽣学号与成绩
------------------------------------
SELECT SNO,GRADE
FROM SC
WHERE CNO='C2'
------------------------------------
π SNO, GRADE (σ CNO='C2' (SC))
************************************
(2) 检索学习课程号为C2的学⽣学号与姓名
------------------------------------
数据库关系代数运算例题
数据库关系代数运算例题
关系代数是一种用于操作关系数据库的形式化查询语言。它包
括一组基本运算符,如选择、投影、并、差、笛卡尔积和连接等,
通过这些运算符可以对关系进行操作和组合,从而实现复杂的查询。
下面我将给出一些关系代数运算的例题,以便更好地理解和应
用这些运算符。
1. 选择运算符(σ):
假设有一个关系表R,包含属性A、B和C,我们希望选择满足
条件A=1的元组。则选择运算可以表示为,σ(A=1)(R)。
2. 投影运算符(π):
假设有一个关系表R,包含属性A、B和C,我们希望只保留属
性A和B,可以使用投影运算符进行处理,π(A,B)(R)。
3. 并运算符(∪):
假设有两个关系表R和S,具有相同的属性集合,我们希望将
两个表中的元组合并成一个表,可以使用并运算符,R∪S。
4. 差运算符(-):
假设有两个关系表R和S,我们希望从R中删除与S中相同的
元组,可以使用差运算符,R-S。
5. 笛卡尔积运算符(×):
假设有两个关系表R和S,我们希望将两个表中的元组进行组合,生成一个新的表,可以使用笛卡尔积运算符,R×S。
6. 连接运算符(⋈):
假设有两个关系表R和S,具有一个共同的属性A,我们希望根
据属性A将两个表中的元组进行连接,可以使用连接运算符,R⋈S。
以上是关系代数的一些基本运算符和例题,通过这些运算符的
组合和应用,可以实现复杂的查询和操作。在实际应用中,还可以
使用更多的运算符和技巧来处理更复杂的问题。关系代数是数据库
领域重要的概念和工具,对于数据库的设计和查询优化都具有重要的意义。
关系代数知识点总结
关系代数知识点总结
一、基本概念
1. 关系
在关系代数中,关系是元素的集合。在数据库中,关系通常是二维表格,每一行代表一个
元组,每一列代表一个属性。例如,一个包含学生信息的关系可以包括学生的学号、姓名、年龄等属性。关系可以表示为R(A1, A2, …, An),其中R是关系的名称,A1, A2, …, An是关系的属性。
2. 元组
在关系中,元组是一个有序的元素序列,其中每个元素对应关系的一个属性。在对关系进
行操作时,我们通常需要操作整个元组或者选取符合特定条件的元组。
3. 属性
关系的每一列都是一个属性,用来描述元组的特定信息。属性可以有不同的数据类型,例
如整数、字符、日期等。在数据库中,属性通常用来对关系进行分类和索引。
4. 关系键
关系键是一组属性的集合,用来唯一确定关系中的元组。在数据库中,关系键通常用来在
关系中快速定位元组,以及对关系进行连接操作。
5. 关系模式
关系模式是关系的结构描述,它包括了关系的名称、属性以及属性的数据类型等信息。通
过关系模式,我们可以了解一个关系的结构和特性。
6. 域
在关系代数中,域指的是关系的属性值的集合。每个属性都有自己的域,例如整数属性的
域包括所有整数,而日期属性的域包括所有日期。
二、基本操作
在关系代数中,有一系列基本的操作,包括选择、投影、连接、并集、差集和笛卡尔积等。这些操作可以对关系进行组合和转换,从而实现对数据的查询和处理。
1. 选择
选择操作是从关系中选择满足特定条件的元组。例如,我们可以对一个包含学生信息的关
系进行选择操作,找出所有年龄大于20岁的学生。
数据库原理重点提示之关系代数
数据库原理重点提示之关系代数
关系代数与关系数据库操作
关系代数是关系数据库系统查询语言的理论基础。
关系代数的9种操作:
并、交、差、乘、选择、投影、联接、除、自然联接运算。
五个基本操作:
并(∪) 差(-) 笛卡尔积(×)投影(σ) 选择(π)
四个组合操作:
交(∩) 联接(等值联接)自然联接(R S) 除法(÷)
关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
关系代数(演算)要求掌握各种语句的应用,多做书中的例题可以帮助自己熟能生巧。
关系代数表达式举例
用关系代数表示数据查询的典型例子
[例]设教学数据库中有3个关系:
学生关系S(SNO,SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
下面用关系代数表达式表达每个查询语句。
(1) 检索学习课程号为C2的学生学号与成绩。
πSNO,GRADE(σCNO='C2'(SC))
(2) 检索学习课程号为C2的学生学号与姓名
πSNO,SNAME(σCNO='C2'(S SC))
由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。
此查询亦可等价地写成:
πSNO,SNAME(S)(πSNO(σCNO='C2'(SC)))
这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。
数据库关系代数表达式学习
数据库关系代数表达式学习
关系代数是关系数据库系统查询语言的理论基础
一、关系代数的9 种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
五个基本操作:
并(u )、差(-)、笛卡尔积(为、投影(b、)选择(n )
四个组合操作:
交(Q)联接(等值联接)、自然联接(R S)、除法(予
注2:等值连接表示先做笛卡尔积(马之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
二、关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
三、举例说明:
设教学数据库中有 3 个关系:
学生关系S(SNO, SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
(1) 检索学习课程号为C2 的学生学号与成绩
SELECT SNO,GRADE
FROM SC
WHERE CNO='C2'
n SNO, GRADE ( b CN0='C2' (SC))
************************************
(2) 检索学习课程号为C2 的学生学号与姓名
SELECT SC.SNO,S.SNAME
FROM SC,S
WHERE SC.SNO=S.SNO
AND O='C2'
n SNO,SNAME ( a CN0='C2' (S SC))
数据库关系代数
数据库关系代数
关系运算及运算符
一、基本代数运算
1并
相同的合并成一列,不同的并起来成为RS
操作示意图:
2差
以R为基准,选择S没有的元组。S中R中没有的不算。操作示意图:
3笛卡尔
关系R为n列,k1元组、关系S为m列,k2元组。R中每个k1与S每个k2组成新的关系。
4投影
二、扩展代数运算
1交
选择R和S相同的值。操作示意图:
Θ相当与运算符,可以认为笛卡儿积是无条件连接,其他的是有条件连接。等值连接的条件就相当于θ=“=”
Θ连接逻辑上是table之间先做笛卡儿积,再做对应选择操作
2.1等值连接
2.2自然连接
特殊的等值连接,要求两个关系中进行比较的分量必须相同属性组,将重复属性(字段)去掉
3除
同时从关系的水平方向和垂直方向同时运算操作示意图:
4外连接
如果把舍弃的元组保存在结果关系中,而其他属性填空值(null)
4.1左外连接
把左边关系R中要舍弃的元组保留。先自然连接,成为ABCE。以左边的为基准,所以B列的b5没了。
4.2右外连接
把右边关系S中要舍弃的元组保留。先自然连接,以右边的S为基准,保留B列共同的值,R中的b4没有所以删除了。
4.3全外连接
不满足R.B=S.B的元组保留。
代数表达式
数据库关系代数表达式
关系代数是关系数据库系统查询语言的理论基础。很有必要学习一下,有些是用代数表达式很方便的东西,用SQL写出来还是挺麻烦的,并不是想象当中那么直接。
一、关系代数的9种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
•
五个基本操作:
并(∪)、差(-)、笛卡尔积(×)、投影(σ)[Where]、选择(π)[Select]
四个组合操作:
交(∩)、
联接(等值联接):等值连接表示(1)先做笛卡尔积(×)之后,(2)对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)
(仅筛选行、不筛选列):即只作用于行上不作用于列上。
如例子:(σ1=4∧2='C2’∧5=‘C4’(SC×SC)) 1.先(SC×SC)2.作用于列
σ1=4∧2='C2’∧5=‘C4’
自然联接(RcrossS):自然连接表示两个关系中若有相同名称的属性(列),则自动作为关联条件,且仅列出一列。
如例子:(σCNO=‘C2’(ScrossSC))中的(ScrossSC)
除法(÷)
通过下面的例子可以看出,(ScrossSCcrossC)(RcrossS),这样的写法,说明默认肯定了cross的定义为连接表有相同名称的属性(即列)
π列(σ(条件)(from后面的表))
∨[or]
π 1(σ1=4∧2='C2'∧5='C4'(SC×SC))
π SNO(σ CNO='C2'∨CNO='C4'(SC))
二、关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
数据库关系代数表达式
数据库关系代数表达式
数据库关系代数表达式是一种简单的数学表达式,它可以用来描述数据库表之间的关系,以及它们之间的操作。它可以被用来查询或更新数据库,并且能够让数据库变得容易管理和操作。
数据库关系代数表达式主要包括6种基本操作:选择(select),投影(project),交集(intersect),并(union),差(difference)和笛卡尔积(cartesian product)。
选择操作可以从数据库中提取满足特定条件的记录。投影操作可以从数据表中抽取特定的属性,以便只展示需要的信息。交集操作可以将两个表中的重复的记录提取出来。并操作可以将两个表中的内容进行合并,以查看它们的所有内容。差操作则可以排除两个表中的重复记录,以便分离出不同的记录。最后,笛卡尔积操作可以将两个表中的记录进行全部组合,以便更好地查看它们之间的关系。
数据库关系代数表达式的最大优势在于它的灵活性,它可以被用来实现各种各样的操作,并且能够被用来构建复杂的查询和更新数据库的功能。此外,它还可以被用来实现多表查询,以及查询结果的进一步操作,这使得它十分强大。
数据库关系代数表达式是一种十分实用的数据库操作工具,它可以帮助开发人员更轻松地管理数据库,而且能够实现多种复杂的操作。因此,它是数据库开发过程中非常重要的一部分,应该被充分利用。
数据库关系代数表达式学习
数据库关系代数表达式学习
关系代数是关系数据库系统查询语言的理论基础
一、关系代数的9种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
五个基本操作:
并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)
四个组合操作:
交(∩)、联接(等值联接)、自然联接(R S)、除法(÷)
注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列) 注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
二、关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
三、举例说明:
设教学数据库中有3个关系:
学生关系S(SNO, SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
(1) 检索学习课程号为C2的学生学号与成绩
------------------------------------
SELECT SNO,GRADE
FROM SC
WHERE CNO='C2'
------------------------------------
π SNO, GRADE (σ CNO='C2' (SC))
************************************
(2) 检索学习课程号为C2的学生学号与姓名
------------------------------------
数据库关系代数
并、差、笛卡儿积、投影、选择是关系代数的5种基本的运算,其他运算,即交、连接、除都可以通过基本的运算推导运算出。
1、并,设有两个关系R和S,它们具有相同的结构,R和S的并是由属于R或属于S的元组组成的集合;
2、差,R和S的差是由属于R但不属于S的元组组成的集合;
3、笛卡尔积,两个集合X和Y的笛卡尓积,又称直积,表示为X 与Y相乘,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员;
4、选择,从关系中找出满足给定条件的那些元组称为选择;其中的条件是以逻辑表达式给出的,值为真的元组将被选取;
5、投影,从关系模式中挑选若干属性组成新的关系称为投影。数据库系统(二)--关系型数据库之关系代数
关系型数据库-关系操作集合
1、基本的关系操作
关系模型中常用的关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。
查询操作分为:选择、投影、连接、除、并、差、交、笛卡尔积等;
五种基本操作:选择、投影、并、差、笛卡尔积;
关系操作的特点是集合操作方式,即操作的对象和结果都是集合、这种操作方式也称为一次一集合的方式。
2、关系数据语言的分类
关系操作是通过关系语言来实现的。关系语言的特点是高度非过程化,即:
(1)用户不必请求数据库管理员为其建立特殊的存取路径,存取路径的选择由 DBMS 的优化机制来完成;
(2)用户也不必求助于循环和递归来完成数据的重复操作。
关系操作的能力可以用两种方式来表示:代数方式和逻辑方式。关系代数、元组关系演算和域关系演算均是抽象的查询语言。结构化查询语言SQL充分体现了关系数据语言的特点和优点,是关于数据库的标准语言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库关系代数表达式学习
关系代数是关系数据库系统查询语言的理论基础
一、关系代数的9种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
五个基本操作:
并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)
四个组合操作:
交(∩)、联接(等值联接)、自然联接(R S)、除法(÷)
注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)
注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
二、关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
三、举例说明:
设教学数据库中有3个关系:
学生关系S(SNO, SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
(1) 检索学习课程号为C2的学生学号与成绩
------------------------------------
SELECT SNO,GRADE
FROM SC
WHERE CNO='C2'
------------------------------------
π SNO, GRADE (σ CNO='C2' (SC))
************************************
(2) 检索学习课程号为C2的学生学号与姓名
------------------------------------
SELECT SC.SNO,S.SNAME
FROM SC,S
WHERE SC.SNO=S.SNO
AND O='C2'
------------------------------------
π SNO,SNAME (σ CNO='C2' (S SC))
此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。----
π SNO,SNAME (S)(π SNO (σ CNO='C2' (SC)))
自然连接的右分量为"学了C2课的学生学号的集合"。
此表达式比前一个表达式优化,执行起来要省时间、省空间。
************************************
(3) 检索选修课程名为MATHS的学生学号与姓名
------------------------------------
SELECT SC.SNO,S.SNAME
FROM SC,S,C
WHERE SC.SNO=S.SNO
AND O=O
AND AME='MATHS'
------------------------------------
π SNO, SANME (σ CNAME='MATHS' (S SC C))
************************************
(4) 检索选修课程号为C2或C4的学生学号
------------------------------------
SELECT SNO
FROM SC
WHERE CNO='C2'
OR CNO='C4'
------------------------------------
π SNO (σ CNO='C2'∨CNO='C4' (SC))
************************************
(5) 检索至少选修课程号为C2或C4的学生学号
------------------------------------
SELECT SA.SNO
FROM SC AS SA,SC AS SB
WHERE SA.SNO=SB.SNO
AND O='C2'
AND O='C4'
------------------------------------
π 1 (σ 1=4∧2='C2'∧5='C4' (SC×SC))
************************************
(6) 检索不学C2课的学生姓名与年龄
------------------------------------
SELECT SNAME,AGE
FROM S
MINUS
SELECT S.SNAME,S.AGE
FROM SC,S
WHERE SC.SNO=S.SNO
AND O='C2'
(Oracle)
------------------------------------
π SNAME, AGE (S)-π SNAME, AGE (σ CNO='C2' (S SC)) ************************************
(7) 检索学习全部课程的学生姓名
------------------------------------
这个定义用SQL表示比较麻烦,略过
------------------------------------
π SNO, CNO (SC)÷π CNO (C)
先用除法取出选取所有课程的SNO集(除法可以理解为一个Filter) π SNAME (S(π SNO,CNO (SC)÷π CNO (C)))
再关联S表取出SNAME
************************************
(8) 检索所学课程包含S3所学课程的学生学号
------------------------------------
这个定义用SQL表示比较麻烦,略过
------------------------------------
π SNO,CNO (SC)÷ π CNO (σ SNO='S3' (SC))
同样运用了除法的特性
************************************
(9) 将新课程元组( 'C10','PHYSICS','YU') 插入到关系C中
------------------------------------
INSERT INTO C VALUES('C10','PHYSICS','YU')
------------------------------------
(C∪('C10','PHYSICS','YU'))