`
wolfcame
  • 浏览: 79393 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

关系代数运算与SQL语句

    博客分类:
  • sql
 
阅读更多

一、传统的集合运算S Q L 语句实现

传统的集合运算包括四种运算:并()、交()、差()、广义笛卡尔积(X)。

<!--[if !supportLists]-->(一)   <!--[endif]-->并运算(Union

1)概述

设关系R和关系S具有相同的目n,且相应的属性取自同一个域。则关系R和关系S的并记为RS,其结果仍为n目关系,由属于R或属于S的元组组成。如RS的元组分别用两个圆表示(去掉了重复的记录),则RS的集合如图11所示虚影部分元组。




 

11 集合RS集合

<!--[if !supportLists]-->(2)   <!--[endif]-->SQL 语句

Select * from R Union Select *from S

<!--[if !supportLists]-->(3)   <!--[endif]-->数据示例

关系R

商品代码

子公司代码

品名

数量

单价

1

Comp1

钢笔

50

1000

2

Comp1

圆珠笔

200

600

关系S

商品代码

子公司代码

品名

数量

单价

1

Comp1

钢笔

50

10.00

5

Comp2

练习本

200

3.00

6

comp2

信笺

1000

3.00

RS运算结果

商品代码

子公司代码

品名

数量

单价

1

Comp1

钢笔

50

1000

2

Comp1

圆珠笔

200

600

5

Comp2

练习本

200

3.00

6

comp2

信笺

1000

3.00

<!--[if !supportLists]-->(二)   <!--[endif]-->交运算(Intersection

1)概述

设关系R和关系S具有相同的目n,且相应的属性取自同一个域。关系R和关系S的交记为R∩S,结果仍为n目关系,由既属于R又属于S的元组组成。如RS的元组分别用两个圆表示,R∩S集合运算结果可用图12示意,则两圆相交部分元组表示RS的交,即由属于R 同时又属于S的记录构成的集合


12 集合R∩S

<!--[if !supportLists]-->(2)   <!--[endif]-->SQ L 语句

Select  R.学号 from RS  where  R. 学号=S. 学号and R.课程名=S. 课程名and R.分数=S.分数

Select R.学号,R.课程名,R.分数 from R  INTERSECT  Select S.学号,S.课程名,S.分数 from S

<!--[if !supportLists]-->(3)<!--[endif]-->数据示例

关系R

学号

课程名

分数

1

数学

80

1

英语

85

1

政治

90

2

数学

85

2

英语

80

2

政治

90

关系S

学号

课名

分数

1

数学

80

1

英语

85

1

政治

92

2

数学

85

2

英语

80

2

政治

90

R∩S结果:

学号

课名

分数

1

数学

80

1

英语

85

2

数学

85

2

英语

80

2

政治

90

 

<!--[if !supportLists]-->(三)<!--[endif]-->差运算(Difference

1)概述

设关系R和关系S具有相同的目n,且相应的属性取自同一个域。定义关系R和关系S的差记为R-S,其结果仍为n目关系,由属于R而不属于S的元组组成。

  如RS的元组分别用两个圆表示,则R-S的集合如图13所示。比较图12和图13,显然R=(R∩SRS)或RSR-(R∩S),即由属于R 但不属于S 的记录构成的集合,去掉重复的记录。


13 集合R-S

<!--[if !supportLists]-->(2)   <!--[endif]-->SQL语句

Select R. 学号,R. 课程名,R. 分数 from R  EXCEPT Select S. 学号,S. 课程名,S. 分数 from S

select 学号, 课程名, 分数From R CWHERE 学号 NOT IN (Select  R.学号 from RS  where  R. 学号=S. 学号and R.课程名=S. 课程名and R.分数=S.分数)

3)数据示例

R-S运算结果:

学号

课名

分数

1

政治

90

 

<!--[if !supportLists]-->(四)<!--[endif]-->笛卡尔积R × SExtended Cartesian Product

1)概述

两个分别为n元和m元的关系RS的广义笛卡尔积R×S是一个 (n×m)元组的集合。元组的前n个分量是R的一个元组,后m个分量是S的一个元组,若RK1个元组,SK2个元组,则R×SK1×K2个元组。记为R×S

2)对应的SQL 语句

Select * from R S

3)数据示例

关系R

姓名

年龄

张三

20

李四

19

关系S

地址

邮编

长沙

410004

娄底

417119

R×S结果:

姓名

年龄

地址

邮编

张三

20

长沙

410004

张三

20

娄底

417119

李四

19

长沙

410004

李四

19

娄底

417119

 

二、专门的关系运算

专门的关系运算包括四种运算即选择(σ)、投影(Π)、连接()和除法(÷,是关系数据库数据维护、查询、统计等操作的基础。

<!--[if !supportLists]-->(一)<!--[endif]-->选择(Selection

1)概述

设有关系R在关系R中求取满足给定条件F的元组组成新的关系的运算称为选择。记作σFR)。

其中F是一个条件表达式,其值为σF(R)是从关系R中选取使条件表达式F为真的元组。这是以行为处理单位进行的运算。

F是由常量、变量及算术比较符{ ><=≠ }和逻辑运算符(, )等构成。

2SQL语句

SELECT R.学号,R.课程名,R.分数 from  R WHERE 分数 >85

<!--[if !supportLists]-->(3)<!--[endif]-->数据示例

选择运算结果如下:

学号

课程名

分数

1

政治

90

2

政治

90

<!--[if !supportLists]-->(二)<!--[endif]-->投影(Projection

1)概述

设有关系R,在关系R中求指定的若干个属性列组成新的关系的运算称作投影,记作ΠA(R)其中A为欲选取的属性列列名的列表,R叫关系名(或叫表名)。这是以列作为处理单位进行的运算,示意图如图22所示的粗体部分,aA},cA},dA}。

a

b

c

d

a∈{A

 

c∈{A

d∈{A

22 ПΑR)示意图

2SQL语句

     关系运算式为:П品名,数量(R)或П[3][4]R

       对应的SQL语句为:SELECT  品名,数量 FROM  R

3)数据示例

     关系R

商品代码

子公司代码

品名

数量

单价

1

Comp1

钢笔

50

1000

2

Comp1

圆珠笔

200

600

       投影运算结果如下:

品名

数量

钢笔

50

圆珠笔

200

<!--[if !supportLists]-->(三)<!--[endif]-->连接Join

1)概述

从两个分别为n m目的关系RS的广义笛卡尔积中选取满足给定条件F的元组组成新的关系称为RS的连接,记作R∞FSFA θ B)。其中AB分别为RS上度数相等且可比的属性列,θ是算术比较符(><=)。即连接运算就是从两个关系的笛卡尔积中选取满足一定连接条件的元组的集合,连接的结果是一个(k 1 + k 2 )元的关系。

2SQL 语句

Select * from RS  where  R.A = S.C

3)数据示例

关系R

     A

B

A1

101

A2

201

关系S

   C

D

E

A1

81

85

A2

82

70

A3

83

90

RS的连接运算结果

A

B

C

D

E

A1

101

A1

81

85

A2

201

A2

82

70

 

<!--[if !supportLists]-->(四)<!--[endif]-->除(Division

1)概述

给定关系Rxy)与Sy)其中xy为属性集(也可为单属性),R中的yS中的y是同名的属性(集)也可以有不同的属性名,但必须出自相同的域集。在求解R÷S时,对Rx的值的分组,然后检查每一组,如某一组中的y包含S中全部的y,则取该组中的x的值作为关系P中的一个元组,否则不取。R÷S的商等于关系P

2SQL语句

   SELECT DISTINCT  A.Name FROM R AS A  WHERE NOT EXISTS

(SELECT * FROM S AS B WHERE NOT EXISTS (SELECT * FROM R AS C where C.Name=A.Name and B.City=C.City))

GROUP BY A.Name

3)数据示例

关系R

  Name

City

张三

长沙

张三

娄底

李四

长沙

李四

邵阳

关系S

Address

长沙

娄底

RS的运算结果:

 

 Name

张三

  • 大小: 1.3 KB
  • 大小: 994 Bytes
  • 大小: 1.2 KB
分享到:
评论

相关推荐

    关于关系代数运算与SQL语句的等价实现的分析与研究.pdf

    总结来说,SQL语句的编写与关系代数运算理论是密切相关的。数据库学者在理解关系代数的基础上,通过实际编写SQL语句来处理数据,可以更加深刻地掌握数据库操作的实质。在教学过程中,结合两者的学习可以有效解决学者...

    关系代数运算与SQL查询的对应关系

    ### 关系代数运算与SQL查询的对应关系 在数据库领域,关系代数作为一种理论工具,为理解数据处理和查询提供了坚实的数学基础。它通过一套严谨的运算规则,包括并集(Union)、差集(Difference)、交集...

    关系代数中交运算与差运算的SQL语句实现.pdf

    "关系代数中交运算与差运算的SQL语句实现" 关系代数是关系数据操纵语言的一种传统表达方式,是结构化查询语言SQL的重要理论基础。在关系代数中,交运算、差运算和除运算是八种常用运算中最重要的三个。然而,SQL中...

    关系代数中除运算的SQL语句实现.pdf

    关系代数中除运算的SQL语句实现.pdf

    关系代数及sql语言习题

    关系代数和 SQL 语言是数据库管理系统的核心组件,关系代数提供了抽象的查询模型,而 SQL 语言则是关系代数的具体实现。下面我们将通过习题的形式来总结关系代数和 SQL 语言的知识点。 关系代数 关系代数是由埃德加...

    高职学院数据库原理教学探讨——如何用SQL语句实现关系代数的运算.pdf

    虽然SQL的表达方式比关系代数更为直观和灵活,但掌握其与关系代数运算的对应关系对于深入理解数据库操作的本质是非常有益的。 首先,从关系代数到SQL的转换来看,选择运算σ(读作“西格玛”)是关系数据库中非常...

    sql查询语句——关系代数.pdf

    在SQL中,还提供了子查询、连接等实现现代关系代数运算的方法。子查询可以在外部查询中使用表达式、列表或者数据集合的地方,连接可以在水平方向上合并两个表,并产生一个新的结果集合。 连接类型有多种,它们之间...

    SQL Server环境下交与差运算的设计与实现.pdf

    通过这些实验,可以加深对关系代数运算和SQL语句之间关系的理解,有助于提高SQL语句的书写技巧。 文章中提及了一个案例导入,即网上图书订购系统的数据库。通过客户表、图书表和订购表三个表的结构和内容,展示了在...

    SQL、关系代数练习题

    这段SQL语句首先通过子查询找出“王强”的班级,然后在外层查询中筛选出与“王强”同一班级的学生(排除“王强”本人)。 #### 2. 检索管理学院没有选修“电子商务”课程的学生的学号、姓名、班级、专业。 **SQL...

    计算机二级:关系代数运算.doc

    以下是对文档中提到的关系代数运算的详细解释: 1. **自然连接(Natural Join)**: 自然连接是一种特殊的等值连接,它基于两个关系共有的属性进行比较。结果中只保留一次相同的属性列,消除了重复。例如,如果关系R和...

    基于C 的关系代数产生的安全SQL查询.pdf

    为了解决这个问题,本文提出了一种在编译期间使用C++编译器检查关系代数运算的方法,从而生成正确的SQL查询,提前进行部分运行期检查工作。 首先,文章指出在使用C++等高级语言编写数据库应用程序时,SQL查询的编写...

    sql语句的笔试经典考题

    ### SQL语句笔试经典考题知识点解析 #### 1. SQL语言的特点 - **非过程化**:SQL语言是一种非过程化的语言,这意味着用户只需指定要做什么,而不需要详细说明如何做。这使得SQL易于学习和使用。(选择题1) - **...

    用SQL实现关系代数中近似除与关系整除方法的研究.pdf

    文章通过分解关系代数除运算为近似除和关系整除,对比分析了这两种不同的逻辑,并通过实例展示了如何使用SQL语句来实现这些除运算。通过具体的SQL实现,可以看出在数据库操作中,如何利用已有的标准语言(SQL)来...

    sql语句的除法表示

    这里我们将深入探讨如何在SQL语句中实现这种关系代数的除法操作。 首先,我们要理解SQL中的除法概念通常涉及到查找满足特定条件的记录比例,或者说是找到一个集合中的元素在另一个集合中的对应关系。在关系代数中,...

    数据库关系代数

    逻辑运算符也常常被用于关系代数运算,其中包括非(NOT)、与(AND)、或(OR)等,它们可以组合基本的条件,以实现更复杂的逻辑筛选。 在实际应用中,关系代数表达式是构建数据库查询语句的基础,数据库系统如SQL...

    SQL语言中差运算与除运算实现的几种方法.pdf

    本文主要讨论了关系代数中差运算与除运算的定义,并探讨了在SQL语言中如何实现这两种运算的几种方法。 在关系代数中,差运算定义为两个关系R和S具有相同的目数n,且相应的属性取自同一个域,关系R和关系S的差的结果...

    SQL语句的查询优化分析.pdf

    首先,理解SQL语句的基础是关系运算理论。SQL语言基于关系运算,而关系代数则是以集合操作为基础的数据操纵语言。关系代数中的基本操作包括并集(union)、差集(difference)、笛卡尔积(cartesian product)、投影...

    关系代数表达式的类型及SQL语言的实现.pdf

    关系代数表达式在SQL语言中的实现是通过使用SELECT、FROM、WHERE、GROUP BY、HAVING等语句来实现的。 关系代数表达式的优点是可以简洁地描述复杂的数据操作,提高了数据处理的效率和准确性。但是,关系代数表达式也...

Global site tag (gtag.js) - Google Analytics