关系代数(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= 

时间: 2024-08-04 18:21:19

关系代数(Relation Algebra)与SQL语句的对应关系的相关文章

一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句

如题: 一对一关联查询时使用relation连贯操作查询后,调用getLastSql()方法输出的sql语句不是一条关联查询语句. 例如: $list = $db->relation(true)->where($where)->order('blogid desc')->limit($Page->firstRow.','.$Page->listRows)->select(); $sql = $db->getLastSql(); 输出的sql语句为: SELE

sql语句的进化--hibernate篇

Hibernate对JDBC进行了封装: 1)Hibernate属于持久层的框架(典型三层架构:表示层.业务层.持久层),其他的持久层比如myBatis等 2)hibernate是开源的一个ORM(对象关系映射)框架 ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射.从对象(Object)映射到关系(Relation),再从关系映射到对象.这 样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(

通过不同的条件组装 一个sql语句

通过不同的条件组装 一个sql语句题目要求:目前需要通过不同会员信息的条件,对会员进行高级查询,这个时候就需要对sql语句的组装工作.需要查询的条件有,会员编号,会员昵称,会员帐号,会员注册时间,会员性别,条件通过GET方式传递给程序,通过任意选择这些条件进行查询,得到相应的结果.参考:会员表为user_bas 及其字段结构:查询条件和数据库字段对应关系:会员编号:id :结构:smallint(6),查询为精确查询(比如:查询编号为1 2的会员)会员昵称:nickname:结构:varchar

NO2:自动生成sql语句

SQL语句自动生成工具 大哉乾元 2016/2/26   作者原创转载请注明出处 前言 这个程序是几年前做成的,现在整理成文档和大家分享,当时参与的项目中大量使用的sql语句,所以SqL语句的代码输入占了较大的比例,为了提高sql语句的书写正确性和输入效率,做成了这个自动生成工具. 一:ADO.NET中执行sql文,对应的sql语句嵌入到vb.net的代码内,分析sql的语法格式个特点: 已检索语句为例分析: A:必须是已select开头 B:检索的字段名(一些系统函数:可选,例如max,sum

数据库-第四章 SQL语句查询

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SQL查询的基本结构 集合运算   空值   聚集函数   嵌套子查询   数据库的修改 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SQL查询的基本机

[转]sql语句中出现笛卡尔乘积 SQL查询入门篇

本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个表,而如果大多查询只涉及到一个表的,那么那个表也往往低于第三范式,存在大量冗余和异常. 因此,连接(Join)就是一种把多个表连接成一个表的重要手段. 比如简单两个表连接学生表(Student)和班级(Class)表,如图: 进行连接后如图: 笛卡尔积 笛卡尔积在SQL中的实现方式既是交叉连接(Cr

自定义ORMapping—动态生成SQL语句

概述 之前在自定义ORMapping--关系表转换为实体或实体集合对象中提到过ORMapping的东西,在那片博客中也有ORMapping实现的一个简单思路,当时只实现了关系表转换为实体或实体集合这个功能,没有实现动态生成SQL这个部分,本片博客就是完善之前的那片博客,实现动态生成SQL语句这么一个功能. 实现思路 1.创建两个自定义特性,分别为表特性和字段特性,目的就是给相应的实体类的类名和属性名,打上相应的特性,从而创建类名和表名,属性和表字段名之间的对应关系 2.创建一个特性解析类,用来解

oracle SQL语句练习MERGE、模糊查询、排序、

Oracle支持的SQL指令可分为数据操作语言语句.数据定义语言语句.事务控制语句.会话控制语句等几种类型:1.数据操作语言语句数据操作语言语句(Data manipulation language,DML)用于进行数据的检索和更新操作.数据检索是数据库应用中使用频率最高的操作类型,因此数据检索的效率对数据库的整体性能影响显著.数据更新包括数据的插入.修改和删除等操作,数据更新操作具有一定的风险性,在其执行过程中DBMS必须保证数据的一致性,以确保数据有效.SELECT.INSERT.DELET

SQL学习笔记之数据库专题(一):SQL语句详解

SQL是用来存取关系数据库的语言,具有查询.操纵.定义和控制关系型数据库的四方面功能.常见的关系数据库有Oracle,SQLServer,DB2,Sybase.开源不收费的有MYSQL,SQLLite等.今天我们主要以MYSQL为例子,讲解SQL常用的SQL语句. 一.数据库 1.创建数据库 create database [if not exists] db_name [character set xxx] [collate xxx] *创建一个名称为freedom的数据库. create d