用VFP的眼光来看待常见的关系代数
2007-01-10 16:40
197 查看
在讲述数据库理论的书籍中,常见的关系代数通常包括以下几种:并、交、差、积、选择、投影和连接等
下面我们就以VFP程序设计中的观点来谈谈这些关系代数:
并(返回一个关系由指定关系中的所有元素构成),此关系代数并相当于VFP的select语句中的UNION子句
交(返回的关系由同时出现在两个指定的关系中的元组构成),此关系代数交相当于VFP的select语句中的in或exists子句
差(返回的关系由哪些属于第一个关系而不属于第二个关系的元组构成),此关系代数相当于VFP的select语句中的not in或not exists子句
积(返回一个关系,包含任意两个分别来自指定关系的元组组合的所有可能元组),此关系代数相当于VFP的select语句中的全连接
选择(返回一个关系,其中的元组来自指定关系中所有满足指定条件的元组),此关系代数相当于VFP中select语句中的where子句
投影(返回一个关系,有去掉若干属性列后的指定关系中剩余的所有(子)元组组成),此关系代数相当于VFP中select语句中的字段选择列表
连接(返回关系中的元组是两个元组的组合,这两个元组来自两个指定的关系,需要满足的条件是此两个关系存在相同的属性,且在相同的属性上有相同的值),此关系代数相当于VFP中select语句中的连接(join)
现在有数据库info,主要储存参加兴趣活动人员的名单,里面有数学组和文学组两个表,具体数据如下
表名:数学组
学号 姓名 班级
40601001 张发 140
30602026 李明 135
30603022 李保国 135
表名:文学组
学号 姓名 班级
40601001 张发 140
40601234 王海 145
40601045 张波 141
关系代数并:返回所有参加兴趣活动的人员名单
语句如下:
SELECT * FROM 数学组 UNION select * FROM 文学组
结果如下:
学号 姓名 班级
30602026 李明 135
30603022 李保国 135
40601001 张发 140
40601045 张波 141
40601234 王海 145
关系代数交:返回同时参加数学组和文学组的兴趣活动人员名单
语句如下:
SELECT * FROM 数学组 WHERE 学号 in (SELECT 学号 FROM 文学组)
结果如下:
学号 姓名 班级
40601001 张发 140
关系代数差:返回参加数学组但没有参加其它兴趣活动小组的人员名单
语句如下:
SELECT * FROM 数学组 WHERE 学号 not in (SELECT 学号 FROM 文学组)
结果如下:
学号 姓名 班级
30602026 李明 135
30603022 李保国 135
关系代数积:返回每一个人参加的兴趣活动小组的统计
语句如下:
SELECT *,IIF(ISNULL(数学组.学号)," ","参加") as 参加数学组,IIF(ISNULL(文学组.学号)," "," 参加") as 参加文学组 FROM 数学组 FULL JOIN 文学组 ON 数学组.学号=文学组.学号
结果如下:
学号_a 姓名_a 班级_a 学号_b 姓名_b 班级_b 参加数学组 参加文学组
40601001 张发 140 40601001 张发 140 参加 参加
30602026 李明 135 参加
30603022 李保国 135 参加
40601234 王海 145 参加
40601045 张波 141 参加
在刚刚连接查询的基础上再次查询得出结果:
SELECT IIF(ISNULL(学号_a),学号_b,学号_a) as 学号,参加数学组,参加文学组 FROM query
结果如下:
学号 参加数学组 参加文学组
40601001 参加 参加
30602026 参加
30603022 参加
40601234 参加
40601045 参加
关系代数选择:返回135班参加数学兴趣活动小组的人员名单
语句如下:
SELECT * FROM 数学组 WHERE 班级=135
结果如下:
学号 姓名 班级
30602026 李明 135
30603022 李保国 135
关系代数投影:返回参加数学兴趣活动小组人员的姓名和学号信息
语句如下:
SELECT 姓名,学号 FROM 数学组
结果如下:
姓名 学号
张发 40601001
李明 30602026
李保国 30603022
关系代数连接:返回同时参加两个兴趣活动小组人员信息
语句如下:
SELECT 数学组.* FROM 数学组 inner join 文学组 on 数学组.学号=文学组.学号
结果如下:
学号 姓名 班级
40601001 张发 140
下面我们就以VFP程序设计中的观点来谈谈这些关系代数:
并(返回一个关系由指定关系中的所有元素构成),此关系代数并相当于VFP的select语句中的UNION子句
交(返回的关系由同时出现在两个指定的关系中的元组构成),此关系代数交相当于VFP的select语句中的in或exists子句
差(返回的关系由哪些属于第一个关系而不属于第二个关系的元组构成),此关系代数相当于VFP的select语句中的not in或not exists子句
积(返回一个关系,包含任意两个分别来自指定关系的元组组合的所有可能元组),此关系代数相当于VFP的select语句中的全连接
选择(返回一个关系,其中的元组来自指定关系中所有满足指定条件的元组),此关系代数相当于VFP中select语句中的where子句
投影(返回一个关系,有去掉若干属性列后的指定关系中剩余的所有(子)元组组成),此关系代数相当于VFP中select语句中的字段选择列表
连接(返回关系中的元组是两个元组的组合,这两个元组来自两个指定的关系,需要满足的条件是此两个关系存在相同的属性,且在相同的属性上有相同的值),此关系代数相当于VFP中select语句中的连接(join)
现在有数据库info,主要储存参加兴趣活动人员的名单,里面有数学组和文学组两个表,具体数据如下
表名:数学组
学号 姓名 班级
40601001 张发 140
30602026 李明 135
30603022 李保国 135
表名:文学组
学号 姓名 班级
40601001 张发 140
40601234 王海 145
40601045 张波 141
关系代数并:返回所有参加兴趣活动的人员名单
语句如下:
SELECT * FROM 数学组 UNION select * FROM 文学组
结果如下:
学号 姓名 班级
30602026 李明 135
30603022 李保国 135
40601001 张发 140
40601045 张波 141
40601234 王海 145
关系代数交:返回同时参加数学组和文学组的兴趣活动人员名单
语句如下:
SELECT * FROM 数学组 WHERE 学号 in (SELECT 学号 FROM 文学组)
结果如下:
学号 姓名 班级
40601001 张发 140
关系代数差:返回参加数学组但没有参加其它兴趣活动小组的人员名单
语句如下:
SELECT * FROM 数学组 WHERE 学号 not in (SELECT 学号 FROM 文学组)
结果如下:
学号 姓名 班级
30602026 李明 135
30603022 李保国 135
关系代数积:返回每一个人参加的兴趣活动小组的统计
语句如下:
SELECT *,IIF(ISNULL(数学组.学号)," ","参加") as 参加数学组,IIF(ISNULL(文学组.学号)," "," 参加") as 参加文学组 FROM 数学组 FULL JOIN 文学组 ON 数学组.学号=文学组.学号
结果如下:
学号_a 姓名_a 班级_a 学号_b 姓名_b 班级_b 参加数学组 参加文学组
40601001 张发 140 40601001 张发 140 参加 参加
30602026 李明 135 参加
30603022 李保国 135 参加
40601234 王海 145 参加
40601045 张波 141 参加
在刚刚连接查询的基础上再次查询得出结果:
SELECT IIF(ISNULL(学号_a),学号_b,学号_a) as 学号,参加数学组,参加文学组 FROM query
结果如下:
学号 参加数学组 参加文学组
40601001 参加 参加
30602026 参加
30603022 参加
40601234 参加
40601045 参加
关系代数选择:返回135班参加数学兴趣活动小组的人员名单
语句如下:
SELECT * FROM 数学组 WHERE 班级=135
结果如下:
学号 姓名 班级
30602026 李明 135
30603022 李保国 135
关系代数投影:返回参加数学兴趣活动小组人员的姓名和学号信息
语句如下:
SELECT 姓名,学号 FROM 数学组
结果如下:
姓名 学号
张发 40601001
李明 30602026
李保国 30603022
关系代数连接:返回同时参加两个兴趣活动小组人员信息
语句如下:
SELECT 数学组.* FROM 数学组 inner join 文学组 on 数学组.学号=文学组.学号
结果如下:
学号 姓名 班级
40601001 张发 140
相关文章推荐
- 数据库考试中常见题分析:关系代数中的除法运算
- 常见的关系数据库
- SQL 形式化语言——关系代数
- 设计模式:常见类的关系小结
- CST,CET,UTC,GMT,DST,Unix时间戳几种常见时间概述与关系(转)
- 【转】如何看待数据与产品之间的关系?
- 数据库--ER模型、函数依赖、无损分解、关系代数
- 【数据库】关系代数基本运算
- sql中的几种关系代数
- 数据库设计的常见关系(转自http://www.qudong.com/)
- 常见Linux有哪些?AS和ES有何区别?CentOS是什么?和Redhat什么关系?
- UML类图中常见的几种关系
- UML类图常见的几种关系
- 关系代数中的除法运算(转载)
- oracle 关系代数
- 数据库系统概论——03——关系代数
- 常见Web技术之间的关系,你了解多少?
- 关系模型之关系代数
- 关系代数教程收集
- python常见的错误类型和继承关系