复杂查询实现多表数据的访问

上传人:ji****72 文档编号:50960945 上传时间:2018-08-11 格式:PPT 页数:48 大小:411KB
返回 下载 相关 举报
复杂查询实现多表数据的访问_第1页
第1页 / 共48页
复杂查询实现多表数据的访问_第2页
第2页 / 共48页
复杂查询实现多表数据的访问_第3页
第3页 / 共48页
复杂查询实现多表数据的访问_第4页
第4页 / 共48页
复杂查询实现多表数据的访问_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《复杂查询实现多表数据的访问》由会员分享,可在线阅读,更多相关《复杂查询实现多表数据的访问(48页珍藏版)》请在金锄头文库上搜索。

1、4Copyright Oracle Corporation, 2001. All rights reserved.从多表中显示数据4-2Copyright Oracle Corporation, 2001. All rights reserved.目标完成本课后, 您应当能够执行下列操作: 写SELECT 语句使用等值和非等值连接从多个表中访 问数据 使用外连接查看不满足连接条件的数据 使用一个自连接,连接一个表到它自己4-3Copyright Oracle Corporation, 2001. All rights reserved.大纲 笛卡尔积 连接的类型 ORACLE的所有连接Equi

2、join 等值Non-equijoin 非等值Outer join 外连接 Self join 自连接 SQL:1999适应性连接Cross joins 交叉连接Natural joins 自然连接Using clause 使用子句Full or two sided outer joins 全连接或双向外连接对于外连接的任意连接条件4-4Copyright Oracle Corporation, 2001. All rights reserved.从多表中获得数据EMPLOYEES DEPARTMENTS 4-5Copyright Oracle Corporation, 2001. All r

3、ights reserved.笛卡尔乘积 笛卡尔乘积的形成,当: 一个连接条件被遗漏时 一个连接条件不正确时 在第一个表中的所有行被连接到第二个表的所有行时 为了避免笛卡尔乘积的形成,在WHERE 子句中应当总 是包含正确的连接条件4-6Copyright Oracle Corporation, 2001. All rights reserved.笛卡尔乘积的产生笛卡尔乘积 20x8=160 rowsEMPLOYEES (20 rows)DEPARTMENTS (8 rows)4-7Copyright Oracle Corporation, 2001. All rights reserved.

4、大纲笛卡尔积 连接的类型 ORACLE的所有连接Equijoin 等值Non-equijoin 非等值Outer join 外连接 Self join 自连接 SQL:1999适应性连接Cross joins 交叉连接Natural joins 自然连接Using clause 使用子句Full or two sided outer joins 全连接或双向外连接对于外连接的任意连接条件4-8Copyright Oracle Corporation, 2001. All rights reserved.Equijoin 等值 Non-equijoin 非等值 Outer join 外连接 Se

5、lf join 自连接连接的类型Cross joins 交叉连接 Natural joins 自然连接 Using clause 使用子句 Full or two sided outer joins 全连接或双向外连接 Arbitrary join conditions forouter joins 对于外连接的 任意连接条件SQL: 1999 适应连接:Oracle所有的连接 (8i 以前):4-9Copyright Oracle Corporation, 2001. All rights reserved.用Oracle 语法连接表使用一个连接从多个表中查询数据在WHERE 子句中写连接条

6、件. 当多个表中有相同的列名时,将表名作为列名的前缀SELECTtable1.column, table2.column FROMtable1, table2 WHEREtable1.column1 = table2.column2;4-10Copyright Oracle Corporation, 2001. All rights reserved.大纲笛卡尔积 连接的类型 ORACLE的所有连接Equijoin 等值Non-equijoin 非等值Outer join 外连接 Self join 自连接 SQL:1999适应性连接Cross joins 交叉连接Natural joins

7、自然连接Using clause 使用子句Full or two sided outer joins 全连接或双向外连接对于外连接的任意连接条件4-11Copyright Oracle Corporation, 2001. All rights reserved.什么是等值连接?EMPLOYEES DEPARTMENTS Foreign keyPrimary key4-12Copyright Oracle Corporation, 2001. All rights reserved.SELECT employees.employee_id, employees.last_name, emplo

8、yees.department_id, departments.department_id,departments.location_id FROM employees, departments WHERE employees.department_id = departments.department_id;用等值连接返回记录4-13Copyright Oracle Corporation, 2001. All rights reserved.使用AND 操作符附加搜索条件EMPLOYEES DEPARTMENTS 4-14Copyright Oracle Corporation, 2001

9、. All rights reserved.限制不明确的列名 在多表中使用表前缀限制修饰列名 用表前缀改善性能 用列别名区别有相同名称,但在不同表中的列4-15Copyright Oracle Corporation, 2001. All rights reserved.SELECT e.employee_id, e.last_name, e.department_id,d.department_id, d.location_id FROM employees e , departments d WHERE e.department_id = d.department_id;使用表别名 使用表

10、别名简化查询 使用表别名改善性能.4-16Copyright Oracle Corporation, 2001. All rights reserved.多于两个表的连接EMPLOYEES LOCATIONS DEPARTMENTS 为了连接n 个表,你最少需要n-1 个连接条件。例如, 为了连接3 个表,最少需要两个连接4-17Copyright Oracle Corporation, 2001. All rights reserved.大纲笛卡尔积 连接的类型 ORACLE的所有连接Equijoin 等值Non-equijoin 非等值Outer join 外连接 Self join 自连

11、接 SQL:1999适应性连接Cross joins 交叉连接Natural joins 自然连接Using clause 使用子句Full or two sided outer joins 全连接或双向外连接对于外连接的任意连接条件4-18Copyright Oracle Corporation, 2001. All rights reserved.非等值连接EMPLOYEESJOB_GRADES在EMPLOYEES 表中的工资 必须在JOB_GRADES 表中 的最低工资和最高工资之间4-19Copyright Oracle Corporation, 2001. All rights re

12、served.用非等值连接返回记录SELECT e.last_name, e.salary, j.grade_level FROM employees e, job_grades j WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;4-20Copyright Oracle Corporation, 2001. All rights reserved.大纲笛卡尔积 连接的类型 ORACLE的所有连接Equijoin 等值Non-equijoin 非等值Outer join 外连接 Self join 自连接 SQL:1999适应性连接C

13、ross joins 交叉连接Natural joins 自然连接Using clause 使用子句Full or two sided outer joins 全连接或双向外连接对于外连接的任意连接条件4-21Copyright Oracle Corporation, 2001. All rights reserved.外连接EMPLOYEESDEPARTMENTS在部门190中无雇员4-22Copyright Oracle Corporation, 2001. All rights reserved.外连接语法 你可以用一个外连接查看那些不满足连接条件的行 外连接运算符是加号(+)SELEC

14、T table1.column, table2.column FROMtable1, table2 WHEREtable1.column(+) = table2.column;SELECT table1.column, table2.column FROMtable1, table2 WHEREtable1.column = table2.column(+);4-23Copyright Oracle Corporation, 2001. All rights reserved.SELECT e.last_name, e.department_id, d.department_name FROM

15、 employees e, departments dWHERE e.department_id(+) = d.department_id ; 使用外连接4-24Copyright Oracle Corporation, 2001. All rights reserved.大纲笛卡尔积 连接的类型 ORACLE的所有连接Equijoin 等值Non-equijoin 非等值Outer join 外连接 Self join 自连接 SQL:1999适应性连接Cross joins 交叉连接Natural joins 自然连接Using clause 使用子句Full or two sided outer joins 全连接或双向外连接对于外连接的任意连接条件4-25Copyright Oracle Corporation, 2001. All rights reserved.自连接EMPLOYEES (WORKER)EMPLOYEES (MANAGER)在WORKER 表中的MANAGER_ID 等于MANAGER 表中的EMPLOYEE_ID4-26Copyright Oracle Corporation, 2001. All rights reserved.连接一个表到它本身SELECT worker.last_name | works for |

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号