关系演算
以数理逻辑中的谓词演算为基础
元组关系演算语言ALPHA
由E.F.Codd提出,以数理逻辑中的谓词演算为基础
语句
检索语句(查询)
GET
更新语句
PUT,HOLD,UPDATE,DELETE,DROP
一、检索操作
(1) 简单检索(即不带条件的检索)
(2) 限定的检索(即带条件的检索)
(3) 带排序的检索
(4) 带定额的检索
(5) 用元组变量的检索
(6) 用存在量词的检索
(7) 带有多个关系的表达式的检索
(8) 用全称量词的检索
(9) 用两种量词的检索
(10) 用蕴函(Implication)的检索
(1)简单检索
GET 工作空间名 (表达式)
[例1] 查询所有被选修的课程号码。
GET W (SC.Cno)
[例2] 查询所有学生的数据。
GET W (Student)
(2)限定的检索
GET 工作空间名(表达式):操作条件
[例3]查询信息系(IS) 年龄小于20岁的学号和年龄。
GET W (Student.Sno,Student.Sage): Student.Sdept='IS'∧student.Sage<20
[例 补充]查询选1号课的学生名和成绩
GET W (Student.Sname,SC.grade): SC.CNO=1 ∧ Student.Sno=SC.Sno
(3)带排序的检索
[例4] 查询计算机科学系(CS)学生的学号、年龄,结果按年龄降序排序。
GET W (Student.Sno,Student.Sage): Student.Sdept='CS' DOWN Student.Sage
排序关键字: UP升序 DOWN降序
(4)带定额的检索
[例6] 查询信息系年龄最大的三个学生的学号及其年龄,结果按年龄降序排序。
GET W (3) (Student.Sno,Student.Sage): Student.Sdept='IS' DOWN Student.Sage
(5)用元组变量的检索
元组变量: 取值在某关系内元组的量,用于形成查询条件
定义元组变量
格式: RANGE 关系名 变量名
例如:
RANGE STUDENT X
(6) 用存在量词的检索
[例8] 查询选修2号课程的学生名字。
RANGE SC X GET W (Student.Sname): 存在X (X.Sno=Student.Sno∧X.Cno=2)
查询语义:查询这样的学生名,条件是存在选课元组X,X的学号与该生的学号相等并且X的课号为2(表明该生选了2号课)
记住: 当查询条件来自工作区以外的关系时, 要使用元组变量和量词.
先定义元组变量, 在查询条件中用量词引入元组变量.
请对比下面两个查询
查询选修2号课程的学生名字。
条件来自工作区外的关系
RANGE SC X GET W (Student.Sname):存在 X(X.Sno=Student.Sno∧X.Cno=2)
查询选修2号课的学生名和成绩
条件来自工作区内的关系
GET W (Student.Sname,SC.grade): Student.Sno=SC.Sno ∧ SC.CNO=2
[例9] 查询选修了这样课程的学生学号,其先行课是6号课程。
RANGE Course CX GET W (SC.Sno): 存在 CX (CX.Cno=SC.Cno∧CX.Pcno=6)
查询CS系选修2号课程的学生名字?
RANGE SC X
GET W (Student.Sname