- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第06章_数据库 关联检索
第六章 关联检索 本章主要内容 6.1 前言 了解关联查询 6.2 笛卡尔关联 描述概念。 6.3 相等关联 描述概念以及应用。 6.4 自我关联 了解概念以及应用方式 。 6.5 外部关联 了解概念以及应用方式 。 本章主要内容 6.6 集合运算 掌握运算概念和应用。 6.7 总结 6.1 前言 本章主要介绍表关联查询的方式。 由于在实际开发过程中,关联查询是占很大比重的。 同时我们需要注意表关联中,传统写法和JOIN写法的区别。 两种方式在开发中的应用都比较广泛。 6.2 笛卡尔关联 当检索时,使用多个表时,如果条件不完全,输出的结果就会有规则的出现重复数据。 而这种重复结果集就是笛卡尔乘积 我们把这种关联方式叫笛卡尔关联 。 从多个表中获取数据 笛卡尔集 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。 6.3 相等关联 最常用的联接类型是对一个公共列中存储了相同数据的几个表创建的, 这种联接称为相等关联。 注意: 多表关联中,追加的条件应该是可以唯一确定关联表的数据. 如果不能唯一,或出现笛卡尔集合的话,肯定是有条件没有追加完全。 等值连接 等值连接 连接多个表 连接 n个表,至少需要 n-1个连接条件。 例如:连接三个表,至少需要两个连接条件。 使用ON 子句创建连接 可以使用 ON 子句指连接条件。 这个连接条件是与其它条件分开的。 ON 子句使语句具有更高的易读性。 多表联结查询 自我关联的两个表,其实就是一个表,只是根据业务的需要,看成两个不同的表 自连接 6.5 外部关联 当用户需要查询结果中包括存在于一个表中但是在另一个表中没有对应的记录的时候,就需要使用外部关联查询了。 需要注意的是外部关联的传统方法在DB2中是不支持的,DB2只支持JOIN的方法。 内连接 与 外连接 内连接只返回满足连接条件的数据。 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外联接。 两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行 ,这种连接称为满 外联接。 外连接语法 使用外连接可以查询不满足连接条件的数据。 多表联结查询—左外联结 多表联结查询—右外联结 6.6 集合运算 在数据库查询中我们有时需要将数据库的检索结果集进行合并,则这个时候需要用到 集合运算(UNION与UNION ALL)。 查询参加日语和英语考试的学生成绩(参看例6.9)。 方式1: 6.6 集合运算 方式2: 6.6 集合运算 方式3: 6.6 集合运算 查询参加日语和英语考试的学生成绩,结果按照课程与成绩降序排序 6.6 集合运算 注意 : 1. UNION ,UNIONALL 集合运算很多情况下可以和OR, IN语句互换。 2. UNION 与UNION ALL的区别只有一点,UNION会对合并后的结果集进行重复数据 的过滤,UNION ALL 不会。 3. 如果要对UNION集合运算的结果进行排序,则只能使用子查询。在单独的UNION 两侧的SQL文中追加ORDER BY是没用的。因为排序后的结果集再合并,数据库并不知道 是否需要再排序。 6.7 总结 本章主要讲解了,关于关联查询,以及相等联接和不等联接,自我联接和外部联接中的方法与运用;还有关于集合运算符在检索数据时的意义和使用。 SELECT A.stuname, B.classname, C.score FROM tbl_studentinfo A, tbl_classinfo B, tbl_scoreinfo C WHERE A.stuno = C.stuno AND B.classno = C.classno AND B.classname in (英语,日语); SELECT A.stuname, B.classname, C.score FROM tbl_studentinfo A, tbl_classinfo B, tbl_scoreinfo C WHERE A.stuno = C.stuno AND B.classno = C.classno AND (B.classname =英语 OR B.classname =日语) SELECT A.stuname, B.classname, C.score FROM tbl_st
文档评论(0)