用VFP的眼光来看待常见的关系代数

  在讲述数据库理论的书籍中,常见的关系代数通常包括以下几种:并、交、差、积、选择、投影和连接等

下面我们就以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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值