关系数据库元组关系演算语言ALPHA

Posted qinghua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关系数据库元组关系演算语言ALPHA相关的知识,希望对你有一定的参考价值。

关系演算 :以数理逻辑中的谓词演算为基础

按谓词变元不同分类

1.元组关系演算:
以元组变量作为谓词变元的基本对象
元组关系演算语言ALPHA
2.域关系演算:
以域变量作为谓词变元的基本对象
域关系演算语言QBE

元组关系演算语言ALPHA

(1) 简单检索(即不带条件的检索)

格式: GET 工作空间名 (表达式1)
查询所有被选修的课程号码。
GET W (SC.Cno)

(2) 限定的检索(即带条件的检索)

格式: GET 工作空间名(表达式1) : 操作条件
查询信息系(IS)中年龄小于20岁的学生的学号和年龄。
GET W (Student.Sno, Student.Sage):Student.Sdept=\'IS\'∧Student.Sage<20 

(3) 带排序的检索

格式: GET 工作空间名(表达式1) [:操作条件] DOWN/UP 表达式2 
查询计算机科学系(CS)学生的学号、 年龄, 结果按年龄降序排序。 
GET W (Student.Sno, Student.Sage): Student.Sdept=‘CS’DOWN Student.Sage

(4) 带定额的检索

格式 : GET 工作空间名(定额) (表达式1) [:操作条件] [DOWN/UP 表达式2] 
取出一个信息系学生的学号。
GET W (1) (Student.Sno): Student.Sdept=\'IS’

(5) 用元组变量的检索

1元组变量的含义
表示可以在某一关系范围内变化(也称为范围变量Range Variable)
2元组变量的用途
简化关系名:设一个较短名字的元组变量来代替较长的关系名。
操作条件中使用量词时必须用元组变量。
3定义元组变量
格式: RANGE 关系名 变量名
一个关系可以设多个元组变量
查询信息系学生的名字
RANGE Student X  GET W (X.Sname):X.Sdept=‘IS’

(6) 用存在量词的检索

查询选修2号课程的学生名字。

RANGE SC X  GET W (Student.Sname): ΕX(X.Sno=Student.Sno∧X.Cno=\'2\')

查询至少选修一门其先行课为6号课程的学生名字
RANGE Course CX SC SCX
GET W (Student.Sname):
E SCX (SCX.Sno=Student.Sno∧
E CX (CX.Cno=SCX.Cno∧CX.Pcno=\'6\'))

(7) 带有多个关系的表达式的检索

查询成绩为90分以上的学生名字与课程名字

RANGE SC SCX GET W (Student.Sname, Course.Cname): SCX (SCX.Grade≥90∧SCX.Sno=Student.Sno∧Course.Cno=SCX.Cno) 

(8) 用全称量词的检索

查询不选1号课程的学生名字。
RANGE SC SCX
GET W (Student.Sname): v(任意)SCX(SCX.Sno≠Student.Sno∨SCX.Cno≠\'1\')

(9) 用两种量词的检索

查询选修了全部课程的学生姓名。

(10) 用蕴函(Implication) 的检索

(11) 集函数

查询学生所在系的数目。

GET W (COUNT(Student.Sdept))
COUNT函数在计数时会自动排除重复值。

更新操作

(1) 修改操作

用HOLD语句将要修改的元组从数据库中读到工作空间中 HOLD 工作空间名(表达式1) [:操作条件 ]
用宿主语言修改工作空间中元组的属性
用UPDATE语句将修改后的元组送回数据库中

把95007学生从计算机科学系转到信息系
HOLD W (Student.Sno, Student.Sdetp): Student.Sno=\'95007   (从Student关系中读出95007学生的数据)
MOVE ‘IS’ TO W.Sdept (用宿主语言进行修改)
UPDATE W (把修改后的元组送回Student关系)

(2) 插入操作

用宿主语言在工作空间中建立新元组
用PUT语句把该元组存入指定关系中  PUT 工作空间名 (关系名)

学校新开设了一门2学分的课程‚计算机组织与结构‛ , 其课程号为8, 直接先行课为6号课程。 插入该课程元组 
MOVE \'8\' TO W.Cno
MOVE \'计算机组织与结构\' TO W.Cname
MOVE \'6\' TO W.Cpno
MOVE \'2\' TO W.Ccredit
PUT W (Course)

(3) 删除操作

用HOLD语句把要删除的元组从数据库中读到工作空间中
用DELETE语句删除该元组  DELETE 工作空间名

95110学生因故退学, 删除该学生元组。
HOLD W (Student):Student.Sno=\'95110\'
DELETE W 

以上是关于关系数据库元组关系演算语言ALPHA的主要内容,如果未能解决你的问题,请参考以下文章

数据库--交大第二套

第四周翻译

关系数据库系统

关系数据库系统

关系模型之关系演算

关系模型之关系演算