- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
A05_复杂查询
课程介绍 目的:掌握复杂SQL查询操作技术 内容:多表连接查询、子查询、TOP-N分析、分页查询、查询结果集合操作、层次查询、查询优化 重点:连接查询 难点:子查询、层次查询 复杂查询 连接查询 SQL92连接语法 子查询 查询结果集合操作 层次查询 Oracle查询优化 一. 连接查询 连接查询概述 等值连接 非等值连接 外连接 自连接 连接查询概述 将来自两个或两个以上表中的数据按照某种规则(数据间的关联关系)连接到一起进行查询,从而获取所需信息。 笛卡尔集 连接查询语法 语法格式: 举例: 连接类型 SQL传统标准: 等值连接( Equijoin ) 非等值连接(Non-Equijoin) 外连接(Outer join) 左外连接 右外连接 自连接(Self join) 等值连接 通过相等的字段值为条件建立表间记录的连接。 语法格式: 举例: 等值连接(2) 多表连接中可使用 AND 操作符增加查询条件 使用表别名可以简化查询 使用表名(表别名)前缀可提高查询效率 等值连接(3) 为了连接n个表,至少需要n-1个连接条件 非等值连接 表间记录的连接条件是使用除=以外的其它运算符比较被连接的字段值。 问题:如何查得每个员工的工资等级? 外连接 使用外连接可以看到参与连接的某一方不满足连接条件的记录。传统的外连接分为左外连接和右外连接两种,外连接运算符为(+)。 举例: 自连接 问题:如何查得每个员工及其上司的工号和姓名? 二. SQL92连接语法 交叉连接 On子句 Using子句 自然连接 外连接 多表连接 SQL92连接类型 语法格式: 连接类型: 交叉连接 使用CROSS JOIN显式标明,产生笛卡尔集,等同于在两个表连接时未使用WHERE子句限定连接条件。 举例: On子句 SQL92语法:等值连接和非等值连接均在FROM子句中使用JOIN关键字标识,并使用ON子句指定连接条件及查询限定条件。 语法格式: 举例: Using子句 如果是按照表间同名字段进行等值连接,还可使用USING子句指定用于等值连接的字段(参照字段)。 注意:不允许在参照列上使用表名或别名前缀 举例: 自然连接 基于两个表中的全部同名字段建立等值连接。 如果两个表中同名字段的数据类型不一致,则连接出错。 不允许在参照字段上使用表名或者别名作为前缀。 举例: 外连接 左外联接 两个表在连接过程中除返回满足连接条件的行以外,还返回左表中不满足条件的行 ,这种连接称为左外联接。 右外联接 两个表在连接过程中除返回满足连接条件的行以外,还返回右表中不满足条件的行 ,这种连接称为右外联接。 全外联接 Oracle9i开始新增功能,两个表在连接过程中除返回满足连接条件的行以外,还返回两个表中不满足条件的所有行 ,这种连接称为满外联接。 左外连接 在FROM子句中使用Left Outer Join或者Left Join标识,然后使用ON子句指定连接条件。 右外联接 在FROM子句中使用Right Outer Join或者Right Join标识,然后使用ON子句指定连接条件。 全外连接 在FROM子句中使用Full Outer Join或者Full Join标识,然后使用ON子句指定连接条件。 多表连接 语法格式: 举例: 三. 子查询 子查询概述 单行子查询 多行子查询 多列子查询 相关子查询 Top-N分析 分页查询 子查询 问题引入:如何查询工资高于张三的员工的信息? 子查询——被嵌入到其它SQL指令(主查询)中查询。 子查询在主查询前执行一次 主查询使用子查询的结果 基本语法格式: 举例: 子查询分类 单行子查询 多行子查询 多列子查询 单行子查询 单行子查询只返回一行记录。 对单行子查询可使用单行记录比较运算符。 举例: 子查询空值/多值问题 如果子查询未返回任何行,则主查询也不会返回任何结果。 如果子查询返回多行结果,则为多行子查询,此时不允许对其使用单行记录比较运算符。 多行子查询 返回多行记录,对其只能使用多行记录比较运算符。 多列子查询 返回结果为多数据列的子查询语句,其用法与返回单列结果的情况类似。 相关子查询 标准子查询——子查询只需要执行一次、然后将其结果代入主查询(子查询的执行并不依赖主查询)。 相关子查询:子查询执行中用到主查询的相关结果。 WHERE子句中使用相关子查询 (在hr方案employees、departements表中)查找那些其直接上司就是其所在部门经理的员工的信息 Top-N分析 获取某一数据集合中的前N条记录 ROWNUM伪列 非排序查询Top-N分析 排序查询Top-N分析
您可能关注的文档
最近下载
- 单位运动会策划方案.ppt
- 2023宪法法律适用培训.pptx VIP
- 第一章 汽轮机级的工作原理讲解.ppt
- 新概念英语第三册 课件-Lesson 20 Pioneer pilots.ppt
- 定向钻回拖力计算公式01_-中文版.xls VIP
- 2024年就业形势与职业发展的展望.pptx
- 上汽荣威i5汽车使用手册用户操作图解驾驶车主车辆说明书pdf电子版下载.pdf
- anylogic教程big book中文案例example55存量管理.pdf
- 《Unit3 Look, listen and learn》教学设计2024-2025学年英语一年级上册小学人教PEP版(一起)(2024).docx VIP
- 2024年度国家公务员录用考试申论试卷及答案解析(适用于中央机关及其省级直属机构综合管理类职位).docx VIP
文档评论(0)