复杂查询技术连接

上传人:pu****.1 文档编号:573035245 上传时间:2024-08-14 格式:PPT 页数:38 大小:594.50KB
返回 下载 相关 举报
复杂查询技术连接_第1页
第1页 / 共38页
复杂查询技术连接_第2页
第2页 / 共38页
复杂查询技术连接_第3页
第3页 / 共38页
复杂查询技术连接_第4页
第4页 / 共38页
复杂查询技术连接_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《复杂查询技术连接》由会员分享,可在线阅读,更多相关《复杂查询技术连接(38页珍藏版)》请在金锄头文库上搜索。

1、中软培训中软培训目标目标这一课里,你将学习:写SELECT 语句使用等值和非等值连接从多个表中访问数据使用外连接查看不满足连接条件的数据使用一个自连接,连接一个表到它自己 1中软培训中软培训 EMPNO DEPTNO LOC- - - 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO.14 rows selected.EMP EMP DEPT DEPT EMPNO ENAME. DEPTNO- -. - 7839 KING. 10 7698 BLAKE

2、. 30 . 7934 MILLER . 10DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 20 RESEARCHDALLAS 30 SALESCHICAGO 40 OPERATIONS BOSTON从多个表中查询数据从多个表中查询数据2中软培训中软培训笛卡尔乘积笛卡尔乘积笛卡尔乘积的形成,当:一个连接条件被遗漏时一个连接条件不正确时第一个表的所有行被连接到第二个表的所有行时为了避免笛卡尔乘积的形成,在WHERE 子句中应当总是包含正确的连接条件3中软培训中软培训笛卡尔乘积的产生笛卡尔乘积的产生笛卡尔乘积笛卡尔乘积: 20x8=160 行行EMP

3、(20 行行)DEPT (8 rows)4中软培训中软培训什么是连接什么是连接连接可以用来从多个表中查询数据语法SELECT column_name, column_name ,column_nameFROM table_name CROSS|INNER|LEFT | RIGHTOUTER JOIN table_name ON table_name.ref_column_name join_operator table_name.ref_column_nameWHERE search_condition5中软培训中软培训Equijoin 等值Non-equijoin 非等值Outer join

4、 外连接Self join 自连接连接的类型Cross joins 交叉连接Natural joins 自然连接Using clause 使用子句Full or two sided outer joins全连接或双向外连接Arbitrary join conditions for outer joins对于外连接的任意连接条件Oracle 所有的连接(8i以前): SQL: 1999 适应连接:6中软培训中软培训用Oracle 语法连接表使用一个连接从多个表中查询数据在WHERE 子句中写连接条件当多个表中有相同的列名时,将表名作为列名的前缀SELECTtable1.column, table

5、2.columnFROMtable1, table2WHEREtable1.column1 = table2.column2;7中软培训中软培训什么是等值连接?EMPDEPT 外键外键FK主键主键PK8中软培训中软培训 SELECT employees.employee_id, employees.last_name, employees.department_id, departments.department_id, departments.location_idFROM employees, departmentsWHERE employees.department_id = depar

6、tments.department_id;用等值连接返回记录注:等值连接也被称为简单连接 (simple joins) 或内连接 (inner joins)。 9中软培训中软培训限制不明确的列名在多表中使用表前缀限制修饰列名用表前缀改善性能用列别名区别有相同名称,但在不同表中的列 10中软培训中软培训SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_idFROM employees e , departments dWHERE e.department_id = d.departmen

7、t_id;使用表别名使用表别名简化查询使用表别名改善性能 11中软培训中软培训多于两个表的连接EMPLOYEES LOCATIONS DEPARTMENTS 为了连接n个表,你最少需要n-1 个连接条件12中软培训中软培训非等值连接EMPLOYEESJOB_GRADES在EMPLOYEES 表中的工资必须在JOB_GRADES 表中的最低工资和最高工资之间13中软培训中软培训用非等值连接返回记录SELECT e.last_name, e.salary, j.grade_levelFROM employees e, job_grades jWHERE e.salary BETWEEN j.low

8、est_sal AND j.highest_sal;14中软培训中软培训外连接EMPLOYEESDEPARTMENTS在部门190中无雇员15中软培训中软培训外连接语法你可以用一个外连接查看那些不满足连接条件的行外连接运算符是加号(+)SELECT table1.column, table2.columnFROMtable1, table2WHEREtable1.column(+) = table2.column;SELECT table1.column, table2.columnFROMtable1, table2WHEREtable1.column = table2.column(+);

9、16中软培训中软培训SELECT e.last_name, e.department_id, d.department_nameFROM employees e, departments dWHERE e.department_id(+) = d.department_id ; 使用外连接17中软培训中软培训自连接EMPLOYEES (WORKER)EMPLOYEES (MANAGER)在WORKER表中的MANAGER_ID等于MANAGER表中的EMPLOYEE_ID 18中软培训中软培训连接一个表到它本身SELECT worker.last_name | works for | mana

10、ger.last_nameFROM employees worker, employees managerWHERE worker.manager_id = manager.employee_id ;19中软培训中软培训概览概览以上部分,是用oracle语法将表连接到一起的查询用 SQL: 1999 语法,你可以获得与用前面讲述的 Oracle 语法同样的结果。 下面,我们结合SQL:1999语法再进行多表查询。20中软培训中软培训用SQL 连接表: 1999 语法用一个连接从多个表中查询数据21中软培训中软培训SQL:1999连接的类型Cross joins Natural joins JO

11、IN table USING column_name JOIN table ON table1.column_name = table2.column_nameLEFT/RIGHT/FULL OUTER 从两个表中返回笛卡尔乘积基于相同的列名连接两个表 执行一个基于列名的等值连接 执行一个基于在 ON 子句中的条件的等值连接 22中软培训中软培训创建交叉连接CROSS JOIN子句导致两个表的交叉乘积该连接和两个表之间的笛卡尔乘积是一样的23中软培训中软培训创建自然连接NATURAL JOIN子句基于两个表之间有相同名字的所有列它从两个表中选择在所有的匹配列中有相等值的行相同类型的列,数据类型

12、必须相同24中软培训中软培训用自然连接返回记录 25中软培训中软培训用USING 子句创建连接如果一些列有相同的名字,但数据类型不匹配,NATURAL JOIN子句能够用USING 子句修改以指定将被用于一个等值连接的列当有多个列匹配时,用USING 子句匹配唯一的列在引用列不要使用表名或者别名NATURAL JOIN 和USING子句是相互排斥的 26中软培训中软培训用USING 子句返回记录27中软培训中软培训用ON 子句创建连接对于自然连接的连接条件,基本上是带有相同名字的所有列的等值连接为了指定任意条件,或者指定要连接的列,可以使用ON 子句连接条件从另一个搜索条件中被分开ON 子句使

13、得代码易懂 28中软培训中软培训用ON 子句返回记录29中软培训中软培训用ON 子句创建三向连接30中软培训中软培训内与外连接在SQL: 1999 中,连接两个表,仅返回匹配的行的连接,称为内连接在两个表之间的连接,返回内连接的结果,同时还返回不匹配行的左(或右)表的连接,称为左(或右)连接在两个表之间的连接,返回内连接的结果,同时还返回左和右连接,称为全连接 31中软培训中软培训左外连接32中软培训中软培训右外连接33中软培训中软培训全外连接34中软培训中软培训附加条件 35中软培训中软培训小结连接类型 等值 Equijoins 非等值 Non-equijoins 外连接 Outer joins 自连接 Self joins 交叉连接 Cross joins 自然连接 Natural joins 全外连接 Full or outer joins 36中软培训中软培训小结在本课中, 您应该已经学会如何使用连接从多表中显示数据:Oracle 9i 和早期版本的私有语法9i以后版本的SQL: 1999 兼容语法 37中软培训中软培训谢谢谢谢!中软培训中心

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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