2.3 关系演算1——元组关系演算

2.3 关系演算

♥  关系演算
以数理逻辑中的谓词演算为基础
♥  按谓词变元不同进行分类
    1. 元组关系演算
      以元组变量作为谓词变元的基本对象
      元组关系演算语言ALPHA
    2. 域关系演算
      以域变量作为谓词变元的基本对象
      域关系演算语言QBE


2.3 关系演算1——元组关系演算

2.3.1 元组关系演算语言ALPHA

语句格式
GET工作空间名(表达式1)[: 条件][DOWN |UP 表达式2]
表达式1:指定语句的操作对象
    关系名 | 关系名.属性名 | 元组变量.属性名 | 集函数[, …]
    条件:结果元组应该满足的条件
      格式:逻辑表达式
    表达式2:指定排序方式
      格式:关系名.属性名 | 元组变量.属性名[, …]
(1)简单检索
GET 工作空间名表达式1
[例 1] 查询所有被选修的课程号码。
      GET W (SC.CNO)
[例 2] 查询所有学生的数据。
      GET W (Student)

(2)限定的检索
GET 工作空间名表达式1):条件
[例 3] 查询信息系(IS)中年龄小于20岁的学生的学号和年龄
      GET W (Student.Sno, Student.Sage):Student.Sdept = 'IS’∧Student.Sage < 20

(3)带顺序的检索
GET 工作空间名表达式1):条件 DOWN | UP 表达式2
[例 4] 查询计算机科学系(CS)学生的学号、年龄,结果按照年龄降序排序
      GET W (Student.Sno, Student.Sage):Student.Sdept = ‘CS’ DOWN Student.Sage
(4)带定额的检索
GET 工作空间名 定额表达式1)[:条件] [DOWN | UP 表达式2]
[例 5] 取出一个信息系学生的学号
      GET W (1) (Student.Sno):Student.Sdept = ‘IS’

[例 6] 查询信息系年龄最大的三个学生的学号及其年龄结果按照年龄降序排序
      GET W (3) (Student.Sno, Student.Sage):Student.Sdept = ‘IS’ DOWN Student.Sage

(5)用元组变量的检索
元组关系演算:以元组变量作为谓词变元的基本对象
♥  元组变量的含义
    表示可以在某一关系范围内的变化
    也称为范围变量Range Variable
♥  元组变量的用途
    ① 简化关系名:设一个较短名字的元组变量来代替较长的关系名
    ② 条件中使用量词必须用元组变量
♥  定义元组变量
    ① 格式:RANGE 关系名 变量名
    ② 一个关系可以设多个元组变量
(6)用存在量词的检索
[例 8] 查询选修2号课程的学生的名字
      RANGE SC X
      GET W(Student.Sname):
      ∃X(X.Sno == Student.Sno ∧ X.Cno = ‘2’)
[例 9] 查询选修了这样课程的学生学号,气直接先行课是6号课程
      RANGE Course CX
      GET W(SC. Sno):
      ∃CX (font color=‘red’>CX .Cno = SC.Cno ∧ CX.Pcno = ‘6’)
[例 10] 查询至少选修一门其先行课为6号课程的学生名字
      RANGE Course CX
                  SC      SCX
      GET W(Student. Sname):
      ∃SCX ((SCX.Sno = Student.Sno ∧∃CX(CX.Cno = SCX.Cno ∧ CX.Pcno = ‘6’)
      前舒约束范式:
      GET W(Student.Sname):
          ∃SCX∃CX(SCX.Sno = Student.Sno ∧ CX.Cno = SCX.Cno ∧ CX.Pcno = ‘6’)
[例 11] 查询成绩为90分以上的学生名字与课程名字
      RANGE SC SCX
      GET W (Student.Sname,Course.Cname):
            ∃SCX(SCX.Grade >= 90 ∧ SCX.Sno = Student.Sno ∧ Course.Cno = SCX.Cno)
(划线部分为桥接条件)

(8)用全称量词的检索
[例 12] 查询不选修2号课程的学生的名字
用存在量词表示
RANGE SC SCX
      GET W (Student.Sname):┐∃SCX

            (SCX.Sno = Student.Sno ∧ SCX.Cno = ‘1’)
用全称量词
RANGE SC SCX
      GET W (Student.Sname):∀SCX

            (SCX.Sno ≠ Student.Sno ∨ SCX.Cno ≠ ‘1’)

(9)用两种量词的检索
[例 13] 查询选修了全部课程的学生的名字

RANGE Course CX
                  SC      SCX
GET W (Student.Sname):∀CX ∃SCX
(SCX.Sno = Student.Sno ∧ SCX.Cno = CX.Cno)
(10)聚集函数
常用的聚集函数(Aggregation function)或内部函数(Build-in function)

函数名功能
COUNT对元组计数
TOTAL求总和
MAX求最大值
MIN求最小值
AVG求平均值

上一篇:2.2 关系代数2——关系特有操作
目    录:《数据库系统概论》
下一篇:3.1 关系数据库标准语言SQL

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值