子查询与级查询.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
子查询与级查询

* 8.3.4 使用OUTER JOIN实现多个表的外连接 1.左外连接 左外连接是在检索结果中除了显示满足连接条件的行外,还显示JOIN关键字左侧表中所有满足检索条件的行。 2.右外连接 右外连接是在结果中除了显示满足连接条件的行外,还显示JOIN右侧表中所有满足检索条件的行。 3.全外连接 全外连接是在结果中除了显示满足连接条件的行外,还显示JOIN两侧表中所有满足检索条件的行。 * 8.3.5 使用CROSS JOIN实现交叉连接 使用CROSS JOIN关键字,可以实现两个表的交叉连接,所得到的结果将是这两个表中各行数据的所有组合,即这两个表所有数据行的笛卡儿积。 交叉连接与简单连接操作非常相似,不同的是,使用交叉连接时,在FROM子句中多个表名之间不是用逗号,而是使用CROSS JOIN关键字隔开。另外,在交叉连接中不需要使用关键字ON限定连接条件,但是可以添加WHERE子句设置连接条件。 【例8.29】使用交叉连接,查询emp表和dept表中,部门编号为10的员工信息和部门信息,如下: 参见教材P190 * 8.3.6 使用UNION操作符获取两个结果集的并集 使用UNION操作符的语法如下: select_statement UNION [ ALL ] select_statement [UNION [ ALL ] select_statement ] [ ... ] 其中,select_statement是查询的SELECT语句;ALL选项表示将所有行合并到结果集中,不指定该项,则只保留重复行中的一行。UNION操作符含义如图8-1所示。 * 8.3.6 使用UNION操作符获取两个结果集的并集 【例8.30】使用UNION ALL操作符,对scott用户的emp表进行操作,获得员工编号大于7800或者所在部门编号为10的员工信息。使用ORDER BY语句将结果集按照deptno列升序排列输出。具体如下: 参见教材P191 【例8.31】使用UNION操作符,但是不指定ALL关键字,获得员工编号大于7800或者所在部门编号为10的员工信息。具体如下: 参见教材P191 * 8.3.7 使用INTERSECT操作符获取两个结果集的交集 使用INTERSECT操作符,获取结果集的公共行,也称为获取结果集的交集。INTERSECT操作符的使用语法同UNION,只是操作符不再是UNION [ALL],而是INTERSECT。 INTERSECT操作符的含义如图8-2所示。 * 8.3.8 使用MINUS操作符获取两个结果集的差集 SQL语言中的MINUS集合运算,表示获得给定集合之间的差异,也就意味着所得到的结果集中,其中的元素仅存在于前一个集合中,而不存在于另一个集合。 MINUS操作符的含义如图8-3所示。 * 8.3.8 使用MINUS操作符获取两个结果集的差集 【例8.33】使用MINUS操作符,获得员工编号大于7800但是所在部门编号不是10的员工信息。具体如下: 参见教材P193 【例8.34】使用UNION ALL和MINUS运算符,获得员工编号大于7800或者所在部门编号为10的员工中,工资大于等于2000的所有员工信息。具体如下: 参见教材P193 * 8.4 实验指导——各类图书的借阅情况 实验指导8-2:各类图书的借阅情况 具体实现时,需要从借书表lend中获得每本书的借阅情况,通过内连接(INNER JOIN),将该表的bookid列与book表中的bookid相关联;通过右外连接(RIGHT JOIN),将book表中的typeid列与type表中的typeid列相关联,获得每本书所属的类别。代码如下: SQL SELECT COUNT(b.bookid) , t.typename 2 FROM lend l INNER JOIN book b ON l.bookid = b.bookid 3 RIGHT JOIN type t ON b.typeid = t.typeid 4 GROUP BY t.typename; COUNT(B.BOOKID) TYPENAME --------------- -------------------- 30 历史类 55 计算机类 10 地理类 39 文学类 0 哲学类 * 8.5 习 题 参见教材P194 第8章 子查询与高级查询 本章要点: 掌握在WHERE子句中使用子查询。 掌握在HAVING子句中使用子查询。 熟练掌握使用IN、ANY和ALL操作符

文档评论(0)

1444168621 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档