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

按谓词变元不同分类

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的更多相关文章

  1. 关系数据库域关系演算语言QBE

    QBE: Query By Example 基于屏幕表格的查询语言 查询要求:以填写表格的方式构造查询 用示例元素(域变量)来表示查询结果可能的情况 查询结果:以表格形式显示 QBE操作框架 ...

  2. 第3章_关系数据库标准语言(SQL)_006_由元组关系演算到SQL Command_001_蕴含式 (其中有对EXISTS的分析)

    前序的链接:元组关系演算 六. 蕴含式 ===>1. 什么是“蕴含式”===>设p.q为两个命题.复合命题“如果p,则q”称为p与q的蕴含式,记作p→q,并称p为蕴含式的前件,q为后件.定 ...

  3. 关系数据库(ch.2)

    2.1.1 关系 域 笛卡儿积 关系 candiate key 如果一组属性值可以唯一的标识一个元祖,但是他的子集不行,那么这是一个候选码 关系可以由三种类型 基本关系 查询关系 视图 为关系附加如下 ...

  4. U2-关系数据库

    2.1 关系数据结构及形式化定义 关系数据库系统是支持关系模型的数据库系统.(关系模型由关系数据结构.关系操作集合和关系完整性约束三部分组成) 2.1.1 关系 1-域 域是一组具有相同数据类型的值的 ...

  5. 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识

    数据库从入门到精通合集(超详细,学习数据库必看) 一.关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是 ...

  6. 你这些知识点都不会,你学个锤子SQL数据库!

    全套的数据库的知识都在这里,持续更新中ing 快戳我查看,快戳戳,不管是Oracle还是mysql还是sqlsever,SQL语言都是基础. 一.关系 单一的数据结构----关系 现实世界的实体以及实 ...

  7. DB总结1

    DBA  重构 data  new york   committee   cobol codasyl  journal DDL  DML    关系演算  域关系演算语言(QBE)  元祖关系演算语言 ...

  8. Java中元组的使用

    元组在计算机领域有着特殊的意义,这个名字听起来似乎有些陌生, 平时在写代码也基本没什么应用场景, 然而, 出人意料的是, 元组跟程序设计密切相关, 可能有的同学不知道, 关系数据库中的「纪录」的另一个 ...

  9. windows 下 使用codeblocks 实现C语言对python的扩展

    本人比较懒就粘一下别人的配置方案了 从这开始到代码 摘自http://blog.csdn.net/yueguanghaidao/article/details/11538433 一直对Python扩展 ...

随机推荐

  1. Angular表达式--插值字符串($interpolate)

    要在字符串模板中做插值操作,需要在你的对象中注入$interpolate服务.在下面的例子中,我们将会将它注入到一个控制器中: angular.module('myApp', []) .control ...

  2. jenkins的Master/Slave模式

    一. Master/Slave模式 分担jenkins服务器的压力,任务分配到其它执行机来执行 Master:Jenkins服务器 Slave:执行机(奴隶机).执行Master分配的任务,并返回任务 ...

  3. poj3181 背包+大数

    http://poj.org/problem?id=3181 Dollar Dayz Time Limit: 1000MS   Memory Limit: 65536K Total Submissio ...

  4. 查看SQLServer的最大连接数

    如何查看SQLServer的最大连接数?相信很多人对个很有兴趣,一下就给出两种方法: 1. 查询服务器属性 默认服务设置为0(表示不受限制). 2. SQL查看最大连接数 这里的32767就是服务器的 ...

  5. ycsb两个阶段说明

     ycsb有几个目录需要注意下: bin: - 目录下有个可执行的ycsb文件,是个python脚本,是用户操作的命令行接口.ycsb主逻辑是:解析命令行.设置java环境,加载java-libs,封 ...

  6. spring 多数据源动态切换

    理解spring动态切换数据源,需要对spring具有一定的了解 工作中经常遇到读写分离,数据源切换的问题,那么以下是本作者实际工作中编写的代码  与大家分享一下! 1.定义注解 DataSource ...

  7. LeetCode OJ:Next Permutation(下一排列)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  8. jdbc之防sql注入攻击

    1.SQL注入攻击:    由于dao中执行的SQL语句是拼接出来的,其中有一部分内容是由用户从客户端传入,所以当用户传入的数据中包含sql关键字时,就有可能通过这些关键字改变sql语句的语义,从而执 ...

  9. Python判断unicode是汉字,数字,英文,或者其他字符

    功能: 判断unicode是否是汉字,数字,英文,或者是否是(汉字,数字和英文字符之外的)其他字符. 全角.半角符号相互转换. 全角.半角? 全角--指一个字符占用两个标准字符位置. 汉字字符和规定了 ...

  10. keras 入门模型训练

    # -*- coding: utf-8 -*- from keras.models import Sequential from keras.layers import Dense from kera ...