2.5.3 域关系演算语言QBE
关系演算的另一种形式是域关系演算。域关系演算以元组变量的分量即域变量作为谓词变元的基本对象。
QBE是Query By Example(即通过例子进行查询)的简称,其最突出的特点是它的操作方式。它是一种高度非过程化的基于屏幕表格的查询语言,用户通过终端屏幕编辑程序以填写表格的方式构造查询要求,而查询结果也是以表格形式显示,因此非常直观,易学易用。
与MS Foxpro的RQBE没有什么联系。
- 操作框架
QBE中用示例元素来表示查询结果可能的例子,示例元素实质上就是域变量。QBE操作框架如书图2-9所示。
| 关系名 | 属性名 | 属性名 | ...... |
| 操作命令 | 元组属性值 或查询条件 | 元组属性值 或查询条件 | ...... |
- 检索操作
- 简单查询
- 例1 求信息系全体学生的姓名
-
| student | Sno | Sname | Ssex | Sage | Sdept |
| | | | | | |
| student | Sno | Sname | Ssex | Sage | Sdept |
| | | P.T | | | IS |
- 示例元素 — 域变量
- 例2 全体学生的全部信息
| student | Sno | Sname | Ssex | Sage | Sdept |
| | P.95001 | P.李勇 | P.男 | P.20 | P.CS |
| student | Sno | Sname | Ssex | Sage | Sdept |
| P. | | | | | |
- 条件查询
- 例3 计科系年龄大于19岁的学生的学号
| student | Sno | Sname | Ssex | Sage | Sdept |
| | P.95001 | | | >19 | CS |
- 例4 “∧”的表达
- 两个条件写在同一行上
- 两个条件写在不同行上,但使用相同的示例元素值
| student | Sno | Sname | Ssex | Sage | Sdept |
| | P.95001 | | | | CS |
| | P.95001 | | | >19 | |
- 例6 同一属性的“∧”的表达
| SC | Sno | Cno | Grade |
| | P.95001 | 1 | |
| | P.95001 | 2 | |
- 例5 “∨”的表达
| student | Sno | Sname | Ssex | Sage | Sdept |
| | P.95001 | | | | CS |
| | P.95002 | | | >19 | |
- 例7 关系的连接
| student | Sno | Sname | Ssex | Sage | Sdept |
| | 95001 | P.李勇 | | | |
-
- 例8 “Ø”的表达
| student | Sno | Sname | Ssex | Sage | Sdept |
| | 95001 | P.李勇 | | | |
-
- 例9 表内连接
| SC | Sno | Cno | Grade |
| | 95001 | P.1 | |
| | Ø95001 | 1 | |
- 集函数
- 主要函数:CNT, SUM, AVG, MAX, MIN
- 例10 集函数查询
| student | Sno | Sname | Ssex | Sage | Sdept |
| | | | | P.AVG.ALL | IS |
- 查询结果排序
- 格式
- DO. | DO ( i ).
- AO. | AO ( i ).
- 例11
| student | Sno | Sname | Ssex | Sage | Sdept |
| | | P.李勇 | 男 | DO(2). | AO(1). |
- 更新操作
- 修改
- QBE不允许修改主码,只能删除之后再插入
- 例12 操作符“U.”
| student | Sno | Sname | Ssex | Sage | Sdept |
| | 95001 | | | U.18 | |
- 例14 通过表达式修改
| student | Sno | Sname | Ssex | Sage | Sdept |
| | 95008 | | | 18 | CS |
| U. | 95008 | | | 18+1 | |
- 插入“I.”
- 例15
| student | Sno | Sname | Ssex | Sage | Sdept |
| I. | 95701 | 张三 | 女 | 17 | IS |
- 删除“D.”
- 例16
| student | Sno | Sname | Ssex | Sage | Sdept |
| D. | 95089 | | | | |
NEXT