码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-05-31 22:18:43      阅读:1162      评论:0      收藏:0      [点我收藏+]

标签:修改   nts   src   范围   bsp   表达   计算   计数   工作空间   

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

按谓词变元不同分类

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

标签:修改   nts   src   范围   bsp   表达   计算   计数   工作空间   

原文地址:http://www.cnblogs.com/vincentqliu/p/6925956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!