关系代数(Relation Algebra)与SQL语句的对应关系
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= 
关系代数(Relation Algebra)与SQL语句的对应关系的更多相关文章
- 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句
如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true) ...
- 关系代数和sql语句对应关系
关系代数运算符 对应sql语句 聚合操作 ∪ (UNION)并 ∩ (INTERSECTION)交 - (DIFFERENCE)差 × (Cartesian PRODUCT)笛卡尔积 ...
- 数据库系统概论学习3-SQL 语句和关系代数(一)SQL 入门
3. SQL 语句和关系代数(一)SQL 入门 3.1 数据库的编程语言 SQL 的优点 SQL 集成了数据查询(data query).数据操作(data manipulation).数据定义(da ...
- Oracle数据库高效sql语句的整理
业务需求说明:由于之前公司后台APP端有一个document表,该表中包含了所有的信息,新的需求就是通过该表创建出一个新的用户表(usertable)和一个档案表(document,该表只保留原doc ...
- [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个 ...
- SQL语句大全(mysql,sqlserver,oracle)
SQL语句大全 --语句功能--数据操作SELECT --从数据库表中检索数据行和列-selectINSERT --向数据库表添加新数据行-insertDELETE --从数据库表中删除数据行-del ...
- oracle SQL语句练习MERGE、模糊查询、排序、
Oracle支持的SQL指令可分为数据操作语言语句.数据定义语言语句.事务控制语句.会话控制语句等几种类型:1.数据操作语言语句数据操作语言语句(Data manipulation language, ...
- 【HIVE】sql语句转换成mapreduce
1.hive是什么? 2.MapReduce框架实现SQL基本操作的原理是什么? 3.Hive怎样实现SQL的词法和语法解析? 连接:http://www.aboutyun.com/thread-20 ...
- GP数据库 常用SQL语句
GP数据库 常用SQL语句 --1,查看列名以及类型 select upper(column_name) ,data_type from information_schema.columns wher ...
随机推荐
- angular实现三级联动
(function(angular) { 'use strict'; var module = angular.module('timecube.shopManage.group.ctrls', [' ...
- Golang中的匿名函数(闭包)
GO语言的匿名函数就是闭包,以下是<GO语言编程>中对闭包的解释 基本概念闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代 ...
- lightinthebox头部分类菜单下拉导航,使鼠标移到See All Categories就显示下拉菜单
lightinthebox头部分类菜单下拉导航,使鼠标移到See All Categories就显示下拉菜单 打开includes\templates\lightinthebox\common\tpl ...
- visudo修改编辑器vim
update-alternatives --config editor
- c3p0连接池:com.mysql.cj.exceptions.InvalidConnectionAttributeException
1 遇到的错误com.mysql.cj.exceptions.InvalidConnectionAttributeException: 四月 17, 2019 10:21:13 上午 com.mcha ...
- dlopen用法
1. 包含头文件 #include<dlfcn.h> 2. 函数定义 void * dlopen(const char* pathName, int mode); pathName 指的 ...
- qt5--QEvent事件
QEvent事件是负责事件分发,包括所有事件返回值为true,用户自己处理事件,不向下分发:false系统处理事件---必须有返回值 查看所有事件,在Qt助手中搜索QEvent::Type #incl ...
- 家谱树 x
家谱树 [问题描述] 有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系. 给出每个人的孩子的信息. 输出一个序列,使得每个人的后辈都比那个人后列出. [输入格式] ...
- Net中Attribute特性的高级使用及自定义验证实现
好久没写博客了,今天在百忙之中抽空来写篇文章,记录一下最近深入学习Attribute特性的笔记及心得.~~ 一.什么是特性? 特性(Attribute)是用于在运行时传递程序中各种元素(比如类.方法. ...
- 18.Python格式化字符串(格式化输出)
Python 提供了“%”对各种类型的数据进行格式化输出,例如如下代码: price = 108 print ("the book's price is %s" % price) ...