已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL左联右联内联全联基础语法sql内联语法基础语法(inner join)SELECT * FROM 表1 inner join 表2 on 表1.userid=表2.useridsql内联语法说明:上面的语句就是查询表1和表2两个表,只要两个表中的userid字段相同的话就拼成一行显示出来。45注:以上语法同等select * from 表1,表2 where 表1.userid=表2.userid,而使用sql内联的话,将会提高很多效率。sql左联语法基础语法(left outer join)SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 表1.userid=表2.useridsql左联语法说明:显示表1中所有的行,并且把表2中所有符合条件的数据都显示到结果集中,如果表2中不符合的数据的都不会显示在结果集中,并且以null显示。sql右联语法基础语法(right outer join)SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.userid=表2.useridsql左联语法说明:显示表2中所有的行,并且把表1中所有符合条件的数据都显示到结果集中,如果左表1中不符合的数据的都不会显示在结果集中,并且以null显示。sql全联语法基础语法(full outer join)SELECT * FROM 表1 FULL OUTER JOIN 表2 ON 表1.userid=表2.useridsql左联语法说明:以上sql全联意思就是显示表1和表2所有行,简单的说吧,就是把表1和表2所有行都组合起来,之后再过滤掉重复的并显示到结果集中。详细实例解读:使用关系代数合并数据1关系代数合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的。在关系代数的形式化语言中:r用表、或者数据集合表示关系或者实体。r用行表示元组。r用列表示属性。关系代数包含以下8个关系运算符r选取返回满足指定条件的行。r投影从数据集合中返回指定的列。r笛卡尔积是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。r并关系的加法和减法,它可以在行的方向上合并两个表中的数据,就像把一个表垒在另一个表之上一样。r交返回两个数据集合所共有的行。r差返回只属于一个数据集合的行。r连接在水平方向上合并两个表,其方法是:将两个表中在共同数据项上相互匹配的那些行合并起来。r除返回两个数据集之间的精确匹配。此外,作为一种实现现代关系代数运算的方法,SQL还提供了:r子查询类似于连接,但更灵活;在外部查询中,方式可以使用表达式、列表或者数据集合的地方都可以使用子查询的结果。本章将主要讲述多种类型的连接、简单的和相关的子查询、几种类型的并、关系除以及其他的内容。2使用连接2.1连接类型在关系代数中,连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起。连接的全部意义在于在水平方向上合并两个数据集合(通常是表),并产生一个新的结果集合,其方法是将一个数据源中的行于另一个数据源中和它匹配的行组合成一个新元组。SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。连接类型定义内连接只连接匹配的行左外连接包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行右外连接包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行全外连接包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。(H)(theta)连接使用等值以外的条件来匹配左、右两个表中的行交叉连接生成笛卡尔积它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配在INFORMIX中连接表的查询如果FROM子句指定了多于一个表引用,则查询会连接来自多个表的行。连接条件指定各列之间(每个表至少一列)进行连接的关系。因为正在比较连接条件中的列,所以它们必须具有一致的数据类型。SELECT语句的FROM子句可以指定以下几种类型的连接FROM子句关键字相应的结果集CROSSJOIN笛卡尔乘积(所有可能的行对)INNERJOIN仅对满足连接条件的CROSS中的列LEFTOUTERJOIN一个表满足条件的行,和另一个表的所有行RIGHTOUTERJOIN与LEFT相同,但两个表的角色互换FULLOUTERJOINLEFTOUTER和RIGHTOUTER中所有行的超集2.2内连接(InnerJoin)内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接。下面是ANSISQL92标准select*fromt_institutioniinnerjoint_tellertoni.inst_no=t.inst_nowherei.inst_no=5801其中inner可以省略。等价于早期的连接语法select*fromt_institutioni,t_tellertwherei.inst_no=t.inst_noandi.inst_no=58012.3外连接2.3.1左外连接(LeftOuterJion)select*fromt_institutionileftouterjoint_tellertoni.inst_no=t.inst_no其中outer可以省略。2.3.2右外连接(RigtOuterJion)select*fromt_institutionirightouterjoint_tellertoni.inst_no=t.inst_no2.3.3全外连接(FullOuter)全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集。在现实生活中,参照完整性约束可以减少对于全外连接的使用,一般情况下左外连接就足够了。在数据库中没有利用清晰、规范的约束来防范错误数据情况下,全外连接就变得非常有用了,你可以使用它来清理数据库中的数据。select*fromt_institutionifullouterjoint_tellertoni.inst_no=t.inst_no2.3.4外连接与条件配合使用当在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。当把条件加入到join子句时,SQLServer、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行。如果将条件放到where子句中,SQLServer将会首先进行连接操作,然后使用where子句对连接后的行进行筛选。下面的两个查询展示了条件放置位子对执行结果的影响:条件在join子句select*fromt_institutionileftouterjoint_tellertoni.inst_no=t.inst_noandi.inst_no=“5801”结果是:inst_noinst_nameinst_noteller_noteller_name5801天河区58010001tom5801天河区58010002david5802越秀区5803白云区条件在where子句select*fromt_institutionileftouterjoint_tellertoni.inst_no=t.inst_nowherei.inst_no=“5801”结果是:inst_noinst_nameinst_noteller_noteller_name5801天河区58010001tom5801天河区58010002david2.4自身连接自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。下面例子是在机构表中查找本机构和上级机构的信息。selects.inst_nosuperior_inst,s.inst_namesup_inst_name,i.inst_no,i.inst_namefromt_institutionijoint_institutionsoni.superior_inst=s.inst_no结果是:superior_instsup_inst_nameinst_noinst_name800广州市5801天河区800广州市5802越秀区800广州市5803白云区2.5交叉(无限制)连接交叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。数据集合中一的每个行都要与数据集合二中的每一个行分别组成一个新的行。例如,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年上海兴伟学院单招职业技能考试题库带答案详解
- 2026年仰恩大学单招职业倾向性测试题库含答案详解(考试直接用)
- 2026年云南省临沧地区单招职业适应性测试题库含答案详解(考试直接用)
- 2026年临汾职业技术学院单招职业技能考试题库附答案详解(预热题)
- 2026年云南省曲靖市单招职业适应性测试题库及答案详解一套
- 2026年三亚中瑞酒店管理职业学院单招职业技能测试题库附答案详解(黄金题型)
- 2026年云南理工职业学院单招职业倾向性考试题库附参考答案详解(综合题)
- 2026年三峡电力职业学院单招职业技能考试题库带答案详解(基础题)
- 2026年上饶职业技术学院单招职业技能测试题库附答案详解(综合卷)
- 2026年临沂职业学院单招职业适应性测试题库附参考答案详解(突破训练)
- 房屋无偿使用协议模板8篇
- 第1课 精彩尽在网页中-从制作到渲染教学设计-2025-2026学年初中信息科技湘教版2024七年级下册-湘教版2024
- 正畸护理培训课件
- 2025年道路危险货物运输押运人员从业资格考试题库(含答案)
- 2025年机动车检测维修专业技术人员职业资格考试(检测评估与运用技术-案例分析)历年参考题库含答案详解(5套)
- 肩袖损伤病人的护理
- 2025年4月自考00015英语(二)试题
- 2025年公共英语三级考试试卷及答案
- 公司年度公益慈善活动方案
- 2025年淮南职业技术学院单招职业适应性测试题库审定版
- 河南省房屋建筑和市政工程勘察-审查检查要点及常见问题解答2025
评论
0/150
提交评论