关系数据库元组关系演算语言ALPHA
关系演算 :以数理逻辑中的谓词演算为基础
按谓词变元不同分类
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的更多相关文章
- 关系数据库域关系演算语言QBE
QBE: Query By Example 基于屏幕表格的查询语言 查询要求:以填写表格的方式构造查询 用示例元素(域变量)来表示查询结果可能的情况 查询结果:以表格形式显示 QBE操作框架 ...
- 第3章_关系数据库标准语言(SQL)_006_由元组关系演算到SQL Command_001_蕴含式 (其中有对EXISTS的分析)
前序的链接:元组关系演算 六. 蕴含式 ===>1. 什么是“蕴含式”===>设p.q为两个命题.复合命题“如果p,则q”称为p与q的蕴含式,记作p→q,并称p为蕴含式的前件,q为后件.定 ...
- 关系数据库(ch.2)
2.1.1 关系 域 笛卡儿积 关系 candiate key 如果一组属性值可以唯一的标识一个元祖,但是他的子集不行,那么这是一个候选码 关系可以由三种类型 基本关系 查询关系 视图 为关系附加如下 ...
- U2-关系数据库
2.1 关系数据结构及形式化定义 关系数据库系统是支持关系模型的数据库系统.(关系模型由关系数据结构.关系操作集合和关系完整性约束三部分组成) 2.1.1 关系 1-域 域是一组具有相同数据类型的值的 ...
- 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识
数据库从入门到精通合集(超详细,学习数据库必看) 一.关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是 ...
- 你这些知识点都不会,你学个锤子SQL数据库!
全套的数据库的知识都在这里,持续更新中ing 快戳我查看,快戳戳,不管是Oracle还是mysql还是sqlsever,SQL语言都是基础. 一.关系 单一的数据结构----关系 现实世界的实体以及实 ...
- DB总结1
DBA 重构 data new york committee cobol codasyl journal DDL DML 关系演算 域关系演算语言(QBE) 元祖关系演算语言 ...
- Java中元组的使用
元组在计算机领域有着特殊的意义,这个名字听起来似乎有些陌生, 平时在写代码也基本没什么应用场景, 然而, 出人意料的是, 元组跟程序设计密切相关, 可能有的同学不知道, 关系数据库中的「纪录」的另一个 ...
- windows 下 使用codeblocks 实现C语言对python的扩展
本人比较懒就粘一下别人的配置方案了 从这开始到代码 摘自http://blog.csdn.net/yueguanghaidao/article/details/11538433 一直对Python扩展 ...
随机推荐
- 负载均衡之DNS域名解析
转载请说明出处:http://blog.csdn.net/cywosp/article/details/38017027 在上一篇文章(http://blog.csdn.net/cywosp/arti ...
- 在Window工作区按下鼠标左键拖动窗体
Window.DragMove(): 允许使用在窗口工作区的暴露区域上方按下其鼠标左键的鼠标来拖动窗口.(窗口工作区:除去窗体的title.bottom后的剩余部分空间) 使用该方法时注意:一定要在鼠 ...
- NLP(三)_统计语言模型
概念 统计语言模型:是描述自然语言内在的规律的数学模型.广泛应用于各种自然语言处理问题,如语音识别.机器翻译.分词.词性标注,等等.简单地说,语言模型就是用来计算一个句子的概率的模型 即P(W1,W2 ...
- shell中条件判断if中的-z到-d
shell中条件判断if中的-z到-d的意思 2011-09-05 10:30 [ -a FILE ] 如果 FILE 存在则为真. [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为 ...
- 注册表操作的几个windows api
(转自:http://blog.sina.com.cn/s/blog_4e66c6cd01000bcu.html) 键管理类: RegCloseKey():关闭注册表键释放句柄. RegC ...
- Myeclipse10 安装Aptana插件
安装步骤: 1.下载aptana3.2 Eclipse Plugin插件. 下载地址:http://update1.aptana.org/studio/3.2/024747/index.html 2. ...
- React Native组件(一)组件的生命周期
相关文章 React Native探索系列 前言 React Native有很多组件比如Image.ListView等等,想要合理的使用组件,首先要先了解组件的生命周期. 1.概述 无论你是开发And ...
- session不一定非得要cookie开启才能使用。也可以使用get传递参数
session不一定非得要cookie开启才能使用.也可以使用get传递参数 可以将session_id();设置为一个常量. define(’s_id‘ ,$_COOKIE['session_nam ...
- 利用struts2的json返回方式来控制jquery.validate的remote框架,进行表单验证
- Ant入门之引用外部jar文件
笔者在java项目开发中经常遇到引用外部Jar包的情况,使用ant打包过程中需要对其引用.现在此简单记忆以飨来者. 此处引用Log4j,具体程序HelloLog4j.java: package oat ...