资源描述:
《关系代数中交运算与差运算的SQL语句实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关系代数中交运算与差运算的SQL语句实现178福建电脑2009年第11期关系代数中交运算与差运算的SQL语句实现李国雁.李奇(河南商业高等专科学校计算机应用系河南郑州450045)【摘要】:关系代数是关系数据操纵语言的一种传统表达方式,是结构化查询语言SQL的重要理论基础.然而关系代数8种常用运算中的交运算,差运算和除运算.在SQL中没有提供专门的运算符加以实现,不利于初学者更好的理解关系代数和SQL之间的关系.本文针对这一现状,对交运算,差运算在SQL中的实现方法进行探讨.【关键词】:关系代数;交运算;差运算;SQL语句1,引言1970年E.F.Codd提出了关系模型的概念
2、【JI.奠定了关系模型的理论基础.为当今主流的关系数据库管理系统提供了坚实的数学基础.1974年.E.F.Codd又联合RayBoyce,DonCham.bedin等人里程碑式地提出了SOL(StrueturedQueryLanguage)it~言.并在上世纪80年代提出了全关系系统的12条准则目.关系数据库技术.经过近半个世纪的发展,形成了坚实的理论基础,成熟的商业产品和广泛的应用领域关系数据模型有三种等价的操纵语言:关系代数,关系演算和SQL,其中SOL是关系数据库的标准语言,关系代数和关系演算是它的理论基础.关系代数是一种抽象的查询语言.用对关系的运算来表达查询.作为研
3、究关系数据语言的数学工具.大多商用的DBMS先把用户提交的sgL查询转化成等价的扩展关系代数表达式.在执行之前需要根据等价规则对其优化1”3141.因此更好的理解二者之间的关系对于SOL语句的执行效率.乃至数据库应用系统的运行效率有着重要帮助但是关系代数中的交运算和差运算在大多DBMS中没有对应的运算符.用SQT.语句表达包含这两种运算含义的查询对初学者而言成为了难题而目前的文献跚也只是从某一角度介绍一种转换方法.无法使读者从多角度深人思考二者之间的关系.本文将通过介绍交运算和差运算的不同实现方法解决这一问题2,交运算的sQr.语句实现2.1交运算的定义:关系R与关系S的交由
4、既属于R又属于S的元组组成.其结果关系仍为n目关系.记作:RNS=ftft∈1tAtES}.用sOL语句实现交运算的核心在于如何找到两个关系中相同的元组(即两个关系均包含的元组),下面介绍4种方法:2.2方法一:利用交运算的定义这种方法根据交运算的定义.通过直接比较两个关系中元组各个属性值是否相同.判断这条元组是否同时出现在两个关系中,SOL语句如下:SekctR.A,R.BFromR.SWhereR.A=S.AandR.B=S.B(A.B为属性集1例1:若关系R和S为如表1.1和表1.2所示的2元关系.表1.1关系R表1.2关系s则根据方法一,R和S求交集的SQL语句可写成
5、如下形式:SelectR.A,R.BfromR.SWhereR.A=S.AandR.B=S.B2.3方法二:利用并运算这种方法先对两个关系求并集.如果并的结果中出现两条重复的元组,说明这条元组是两个关系均包含的.SQT.语句如下:Select?from(SelectfromRUnionallSelectfromS1Groupby关键字Havingeounl()=2则根据方法二.例l中R和S求交集的SQL语句可写成如下形式:Selectfrom(SelectfromRUnionallSelectfromS1GroupbyA.BHavingeotlnt(,=22.4方法三:利用i
6、n谓词这种方法利用嵌套查询的方式判断哪些元组两个关系均包含.SQL语句如下:SELECTFROMRWHEREB:取值1andAIN(SELECTAFROMSWHEREB=取值21则根据方法三.例l中R和S求交集的sQL语句可写成如下形式:SELECTFROblRWHEREAIN(SELECTAILIONSWHERER.B---S.B)2.5方法四:使用EXI谓词这种方法利用带有EXISTS谓词的嵌套查询.判断关系R中的元组是否在关系S中也存在.SQL语句如下:Sdect’FromRWhereExists(Sel~tFromSWhereR.A--S.AandR.B=S.B,则根
7、据方法四.例1中R和S求交集的SQL语句可写成如下形式:Select?fromRWhere’Exists(Select’FromSWhereR.A--S.AandR.B--S.B13,差运算的SQL语句实现3.1差运算的定义:关系R与关系S的差由属于R而不属于S的所有元组组成,其结果关系仍为n目关系.记作:R—S={tlt∈RAtSl.用SQL语句实现交运算的核心在于如何找到那些只在一个关系中出现的元组,下面介绍3种方法:3.2方法一:利用差运算定义这种方法根据交运算的定义.利用嵌套判断哪些元组是R中包