第5讲 连接查询.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle数据库查询与管理 第5章:多表联接查询 本章内容 INNER JOIN Join的类型及用法 自然连接 非等值连接 OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN 笛卡尔积 本章目标 使用等值联接和非等值连接访问多个表中的数据 使用自连接将表连接到自身 使用外连接 使用连接显示多个表中的数据 知识点概览 # 知识点 重点 难点 应用 说明 1 使用连接 √ 使用连接查询多表数据 2 等值连接 √ 3 使用表别名 √ √ 使用别名来引用表 4 笛卡尔积 多表查询未指定条件的情况 5 连接条件和连接类型 6 7 8 9 问题1:获取多个表中的数据 SQL 99标准的连接 SQL 99标准的连接有 自然连接 外连接(OUTER连接) LEFT OUTER RIGHT OUTER FULL OUTER 交叉连接 Oracle中的连接查询语法 编写查询中的建议 使用表前缀限定来区分来自不同表中的名称相同的列 使用表前缀可以提高性能 可以使用表别名来代替完整表名前缀,使得SQL代码更简短,因而占用更少的内存 也可以使用列别名区分 示例: 问题1 的实现 SELECT employee_id,department_id,department_name FROM employees NATURAL JOIN departments; 这种连接叫做自然连接 自然连接 以两个表中具有相同名称的所有列为基础 从两个表中在匹配列中有相同值的行 如果名称相同但字段类型不同,则返回一个错误 另外一个自然连接的例子 Where子句同样适用于自然连接查询中 使用JOIN和USING子句创建连接 如果两个表有多个匹配的列,则可以用JOIN和USING子句指定等值连接的列 USING子句指定连接使用的匹配列 NATURAL JOIN与USING子句是互斥的! 不要对USING子句中使用的列进行表前缀限定 使用JOIN和ON子句创建连接 自然连接是对具有相同名称的所有列进行等值连接 使用JOIN和ON子句可以指定任意条件或指定要连接的列,列名可以不同 连接条件独立于其他搜索条件 ON子句使代码易于理解 使用ON子句实现三个表的连接 对连接附加筛选条件 使用JOIN的AND子句或WHERE子句进行连接时的条件筛选 示例:查询149号员工所管辖的员工信息和部门信息 自连接 观察EMPLOYEES表中的数据,假设把EMPLOYEES表复制为两份,WORKER和MANAGER 自连接 对同一个表进行的连接 必须使用不同的表别名来标识在查询中每次对表的引用 示例: 使用一个自连接来显示每个雇员及其管理者的名字 SELECT w.first_name || || w.last_name || works for || m.first_name || || m.last_name FROM employees w JOIN employees m ON w.manager_id=m.employee_id 使用表别名 表别名 使用表别名可以简化查询 使用表前缀可以提高性能 示例1:不使用表别名查询产品名称和产品类型 示例2:使用表别名查询产品名称和产品类型 SELECT products.NAME,product_types.NAME FROM products,product_types WHERE products.product_type_id=product_types.product_type_id; SELECT p.NAME,pt.NAME FROM products p,product_types pt WHERE p.product_type_id=pt.product_type_id; 非等值联接 select employee_id,e.last_name,e.salary,g.grade_level from employees e join job_grades g on e.salary between g.lowest_salary and g.highest_salary 使用Oracle语法完成连接查询 可以在where子句中编写联接条件 此时FROM子句中要跟多个表 如果在多个表中出现了相同的列名,则在列名的前面加上表名进行限定 SELECT table1.column,table2.column FROM table1 JOIN table2 ON table1.column1=table2.column2 筛选条件用AND附加在where的联接条件后 示例:查询雇员Matos的部门编号和部门名称 连接两个以上的表时,多个联接条件之间用A

文档评论(0)

0520 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档