8.3  多表查询

多表查询是指使用SELECT语句从多个表中查询数据,多个表之间通过主外键关系进行关联。在Oracle中,多表查询有两种写法,一种是由ANSI制定的标准的连接语法;另一种是由Oracle自由地连接语法。

8.3.1  多表查询分类

大多数情况下从一个表中很难获取到比较全面的信息,比如要查询emp表中每个员工的部门名称,由于部门名称存储在dept表中,emp表通过deptno与dept表进行了主外键关联。因此要在查询结果中包含部门名称的话,必须要同时查询emp表和dept表来获取数据。

连接其实就是一种普通的SQL语句,只是在FROM部分要指定多个表名称,同时使用表别名进行区分,Oracle将根据连接所要返回的结果数据进行分类,在Oracle中主要有3种类型的连接。

内连接:这种连接返回既满足A表又满足B表的行,只有连接(join)的条件满足才返回,否则不会返回任何数据。

外连接:外连接是内连接的扩展,外连接返回符合条件的行,同时可以根据指定的条件返回不满足连接条件的左边的表行或者是右边的表行。外连接又分为左外连接和右外连接。

自连接:是指一个表连接到自身,比如emp表中每个员工属于一个经理,经理的员工编号也存在于emp表中,因此可以说mgr和emp是自连接关系。

学习多表连接查询有一个好的办法,TOAD提供了一个名为Query Builder的可视化查询设计器,下面通过一个例子学习如何通过可视化的工具来创建多表查询,步骤如下所示:

(1)启动TOAD,使用scott/tiger用户登录进入到数据库,选择"Database|Report|Query Builder"选项,将进入到TOAD提供的查询设计器窗口,如图8.4所示。

(点击查看大图)图8.4  TOAD的查询设计器窗口

如果对象面板没有显示出来,请用鼠标右键单击设计器面板,从弹出的菜单中选择"Object Palette"选项。

(2)从对象面板中拖emp和dept表到设计器面板,可以通过"Ctrl+表名称"进行多选。此时可以看到两个表已经加入到了查询设计器面板。通过拖动emp表中的deptno字段到dept表的deptno主键字段,TOAD将自动创建两个表之间的连接,并且在"Generated Query"选项卡中显示生成的SQL语句,如图8.5所示。

(3)在设计器中,通过选中表字段左侧的复选框选择要查询的列,可以看到生成的SQL语句会自动加入所选择的字段。如果要改变emp和dept表之间的连接,可以双击表与表之间的连接线,如图8.6所示。

在弹出的"View Joins"窗口中,可以看到两个表的连接方式,同时提供了内连接(Inner Join)和外连接(Outer Join)的选择项,在"Join Test"连接测试中,可以指定deptno的连接方式。这里使用默认的内连接,如果需要更改,只需要选中单选按钮即可。

(点击查看大图)图8.5  拖动表名称产生查询语句

(点击查看大图)图8.6  更改多表查询的连接方式

(4)在设计完了连接查询后,可以单击工具栏上的 图标执行查询,或者将语句复制到SQL*Plus中执行,设计器生成的查询语句如下所示:

SELECT dept.deptno, dept.dname, dept.loc, emp.empno, emp.ename, emp.job,

emp.hiredate, emp.mgr, emp.sal, emp.comm

FROM scott.dept, scott.emp

WHERE ((emp.deptno= dept.deptno))

在了解了这个方便的功能后,接下来学习一下这几种连接的实现方式和异同之处。

【责任编辑:book TEL:(010)68476606】

点赞 0

oracle 丁勇 从零开始学_8.3.1 多表查询分类相关推荐

  1. 从零开始学 MySQL —数据库和数据表操作

    ​前言 今天我们学习下核心的内容,学习并实践如何对数据库表和表中的内容做修改,删除,重命名等操作.(想看看周末还有多少爱学习的小伙伴,你们在哪里呀,O(∩_∩)O哈哈~) 1.目录 数据库操作:删除数 ...

  2. Oracle Spatial分区应用研究之一:分区与分表查询性能对比

    1.名词解释 分区:将一张大表在物理上分成多个分区,逻辑上仍然是同一个表名. 分表:将一张大表拆分成多张小表,不同表有不同的表名. 两种数据组织形式的原理图如下: 图 1分表与分区的原理图 2.实验目 ...

  3. 从零开始学前端:函数 --- 今天你学习了吗?(JS:Day8)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:九九乘法表.全选反选全不选 - 今天你学习了吗?(JS:Day7) 文章目录 从零开始学前端:程序猿小白也可 ...

  4. 从零开始学 Web 系列教程

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新-- github:https://github.com/Daotin/Web 微信公众号:前端队长 博客园:http://ww ...

  5. 从零开始学python微课视频版-从零开始学Python(微课视频版)

    基本信息 书名:从零开始学Python(微课视频版) :89.80元 作者:何明 编著 著 出版社:中国水利水电出版社 出版日期:2020_04_01 ISBN:9787517083818 字数:64 ...

  6. 从零开始学架构5 - 实战篇

    从零开始学架构5 - 实战篇 38 | 架构师应该如何判断技术演进的方向? 潮流派? 保守派? 跟风派? 技术演进的动力 1)对于产品类业务,答案看起来很明显:技术创新推动业务发展! 苹果开发智能手机 ...

  7. 国外计算机从什么开始学,从零开始学电脑知识 1(国外英语资料).doc

    从零开始学电脑知识 1(国外英语资料) 现帛遣吐姿裙春攫踊炔鸿用棚满部佬酝棺赁裸典役臃士阿夫疙眩蒜乳碗贿搏巨标蓝絮灿雍陆翻榨翟哗瘸渝便拙脸齐印欢塞部尉登咕秦曳叛泻憋俞藩凿粹提辣毅涟名骄参腻磁贸胜众兹仅 ...

  8. python基础实例教程 微课版-从零开始学Python(微课视频版)

    基本信息 书名:从零开始学Python(微课视频版) :89.80元 作者:何明 编著 著 出版社:中国水利水电出版社 出版日期:2020_04_01 ISBN:9787517083818 字数:64 ...

  9. 从零开始学定位 --- 使用kaist数据集进行LIO-SAM建图

    之前的文章只是将数据的雷达在rviz中进行可视化了,并没有实际用起来. 这篇文章将使用Kaist Urban08 数据使用LIO-SAM进行三维点云地图的构建. 1 clone 工程 仓库的地址是 h ...

最新文章

  1. 商业逻辑12讲之管理思维的逻辑
  2. count 和列不能一起查am_AM-RB 003 会不会让 Aston Martin 变成下一个法拉利?
  3. 卷积神经网络中十大令人拍案叫绝的操作
  4. MFC消息响应机制及映射机制理解
  5. python做图片-python做图
  6. Linux_MySQL下(4) 未整理
  7. 免校准的电量计量芯片_应物联网而生:合力为HLW8012系列免校准电能计量芯片...
  8. 程序员修炼之道---从小工到专家 第一章
  9. ubuntu 12.04 安装 Anjuta
  10. 遥感影像处理-NDVI
  11. 读博,每天要不要工作十二小时
  12. numpy.insert用法以及内插插0的方法
  13. P5713_洛谷团队系统(深基3.例5)
  14. 面向对象编程实验课随笔(承继下的构造函数和析构函数)
  15. Neural network state estimation for full quantum state tomography笔记
  16. go time.after
  17. oracle在哪些系统运行,Oracle运行操作系统命令
  18. layui树形菜单右键_layui-treetable
  19. 《Linux内核分析》 第二节 操作系统是如何工作的
  20. 334个地级市名单_20年厦门大学法硕报考——非法学最低358附录取名单分数线对比...

热门文章

  1. 2*2矩阵训练集比例对BP神经网络分类性能影响
  2. acs880变频器选型手册_据说这是变频器知识里讲的最全的了,小编拿来分享给大家!...
  3. python判断哪个数最小_怎么用python比较三个数大小
  4. 【Paper】2021_领导-跟随多智能体系统容错一致性控制
  5. 3.1 基础模型-深度学习第五课《序列模型》-Stanford吴恩达教授
  6. STM32 基础系列教程 45 - FSMC_LCD_Touch
  7. DC课程笔记-数字逻辑综合工具-DC Synthesis Optimization Techniques
  8. 1、C语言面试笔试---变量定义和声明
  9. 老司机又开车(来不及解释,快上!)之秒懂单片机指针!
  10. uboot中添加新型号步骤以及编译方法