数据库——关系演算

本文详细介绍了关系演算中的元组关系演算语言ALPHA,包括简单检索、限定检索、带排序和定额的检索,以及如何使用元组变量、存在量词、全称量词、蕴函进行复杂检索操作。同时,提供了多个实际的数据库查询示例,如图书管理和工程供应数据库的练习问题。
摘要由CSDN通过智能技术生成

关系演算

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

元组关系演算语言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
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值