SQL语句的执行一般是先翻译为关系代数再被执行的(能有效提高执行速度),所以我们有必要

了解关系代数与SQL语句间的对应关系。

就像高中代数由+-*/和数字组成,关系代数是由union、intersection、join等运算符和关系实例

组成的。

关系代数有五个基础运算符,这五个基础运算符能派生出其他组合运算符。它们分别是:

选择(σ, selection)、投影(π, projection)、叉乘(x, cross-product)、

差(-, set-difference)和并(υ, union)

它们和SQL语句的对应关系为:

选择(σ, selection)相当于SQL语句中的where,表示选出满足一定条件的行。

如:σ rating>8 (S2)相当于 select * from S2 where rating>8;

投影(π, projection)相当于SQL语句中的select。。。distinct, 表示选择哪些列。注意:投影是会去重的!

如:π sname,rating (σ rating>8 (S2))相当于 select sname, rating from S2 where rating>8;

叉乘(x, cross-product)相当于SQL语句中的from,表示穷举所有集合两边元素的组合量

如: AxB 相当于 select * from A, B; 注意:叉乘时两个集合不能有重名列

差(-, set-difference)R-S返回所有在R中而不在S中的元组

并(υ, union)RυS返回包含在R中或在S中的所有元组

注意:并、交、差都要求两个关系实例是并相容的。 并相容指:1. 两个关系实例字段数相同 2. 对应字段类型、取值范围相同

合成运算符:

合成运算符是由基础运算符组合派生而来的,算是一种速记标志。

交(∩, intersection) R∩S返回既在R中又在S中的元组。

自然连接(⋈, natural join)相当于先做叉乘,再选择公共属性一样的关系实例。如果没有公共属性的话,那么结果就是叉乘

除(÷, division)r÷s, 返回r中包含与s共有列但其他列不同的关系实例。

例如:

r的上下蓝色和金黄色部分包含s,而中间橙色部分仅部分包含s,白色部分完全不包含s,所以r÷s=

更多相关文章

  1. sqlserver 存储过程 递归查询分组+hierarchyid重建会员关系
  2. android版本与linux内核版本对应关系
  3. 网路搜集:java整型数与网络字节序的 byte[] 数组转换关系
  4. Java-子类和父类的几种关系
  5. JPA没有将外键保存到@OneToMany关系
  6. 正在学习C#的新手请教:ASP.NET、HTML5, javascript的关系

随机推荐

  1. 当页面上有多个按钮时,按钮样式在页面加载
  2. 从占用转义字符的字符数组创建字符串
  3. 无法让.click()在禁用的textarea上工作
  4. AJAX应该使用hashtag /#!/或不呢?
  5. Div高度为图像高度,图像宽度为div宽度
  6. 环回 - 在“保存后”挂钩中覆盖之前查看
  7. 获取“RangeError:超出最大调用堆栈大小”
  8. js曲线图+饼状图+柱状图 (json数据)
  9. 基于缓冲区数据创建文件
  10. Javascript setTimeout 带参数延迟执行