- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- (高清版)B-T 2099.1-2021 家用和类似用途插头插座 第1部分:通用要求.pdf VIP
- 劳动创造美好生活中职生劳动教育全套教学课件.pptx
- 人工智能在高中美术课堂中的应用.pdf
- 西藏自治区日喀则市高一入学数学分班考试真题含答案.docx VIP
- 2025黑龙江省建设投资集团有限公司面向系统内部及社会招聘12人笔试备考试题及答案解析.docx VIP
- 医院医德医风考评公示制度医德医风考评制度及考评实施细则.docx
- 晶体工程资料.pdf VIP
- 成都川师锦华小升初入学分班考试英语考试试题及答案.docx VIP
- 第六章晶体工程.ppt VIP
- ASUS华硕ROG SWIFT PG65UQ中文说明书.pdf VIP
文档评论(0)