多表查询就是说从多个表中获取相应的数据。
(1)笛卡尔积【连接条件无效或被省略,两个表的所有行都发生连接,所有行的组合都会返回(n*m)】
SQL> select e.ename,d.dname from emp e,dept d;//无效
SQL> select e.ename,d.dname from emp e,dept d
2  where e.ename='SCOTT';//有效
(2)等值连接(内连接或简单连接)
两个表的连接条件的列值必须相等,通常这样的连接包含一个主键和一个外键
SQL> select e.ename,d.dname from emp e,dept d
2  where e.deptno=d.deptno
3  and e.ename='SCOTT';
(3)多于两个表的连接
SQL> create table manager
2  as
3  select ename,deptno,sal,job
4  from emp;   //创建manager表
SQL> select e.empno,m.ename,m.deptno,d.loc
2  from emp e,manager m,dept d
3  where m.deptno=d.deptno
4  and m.ename=e.ename
5  and e.job=UPPER('manager');
(4)非等值连接【使用其他连接运算符】
SQL> select e.empno,e.ename,e.sal,s.grade
2  from emp e,salgrade s
3  where e.sal
4  between s.losal and hisal;
(5)外部连接【外部连接不只列出与连接条件向匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行】
SQL> select e.ename,e.deptno,d.dname
2  from emp1 e,dept1 d
3  where e.deptno(+)=d.deptno;//dept1表为不缺乏连接信息的表,emp1表为缺乏连接信息的表外部连接运算符(+)放在缺少相关连接信息的表的一侧,它能返回该表中那些在另一个表中没有得到匹配的记录。
SQL> select e.ename,e.deptno,d.dname
2  from emp1 e left outer join dept1 d
3  on e.deptno=d.deptno;//左外连接
SQL> select e.ename,e.deptno,d.dname
2  from emp1 e right outer join dept1 d
3  on e.deptno=d.deptno;//右外连接
SQL> select e.ename,e.deptno,d.dname
2  from emp1 e full outer join dept1 d
3  on e.deptno=d.deptno;//全外连接
(6)自然连接
在oralce中使用natural join,也就是自然连接。在Oracle中的join连接中使用using关键字,是相对于natural join的。如果是使用natraul join,并且两张表中如果有多个字段是具有相同的名称和数据类型的,那么这些字段都将被oracle自作主张的将他们连接起来。但实际上我们有时候是不需要这样来连接的。我们只需要将他们的多个具有相同的名称和数据类型的字段中挑选一两个。这时候我们就需要用到using 关键字了。
SQL> select ename,dname
2  from emp1 natural join dept1;//自然连接(会自动搜索表结构,判断是否有列完全相同,完全相同就作为连接的条件)
SQL> select ename,deptno,dname
2  from emp join dept using (deptno);//using的使用
SQL> select ename,emp.deptno,dname
2  from emp join dept using (deptno);//using()里面的字段不能指定前缀,否则会出错
1、如果在使用using关键字时,而且select的结果列表项中包含了using关键字所指明的那个关键字,那么请不要在select的结果列表项中对该关键字指明它属于哪个表。
2、using中仅能使用一个列名。
3、natural join关键字和using关键字是互斥的,也就是说不能同时出现。
(7)自连接【把一个表看做两张表,起两个别名,然后再根据要求进行连接】
SQL> select e.ename as "Employee Name",e.mgr,m.ename "Manager Name"
2  from emp1 e,emp1 m
3  where e.mgr=m.empno
4  and e.ename='SMITH';
CUUG
更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6

转载于:https://blog.51cto.com/19880614/1150098

Oracle数据库多表查询相关推荐

  1. Oracle数据库—— 多表查询

    Oracle数据库-- 多表查询 (一)笛卡尔问题 1.笛卡尔积会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 2.为了避免笛卡尔积,可以在WHERE加入有效的连接条件 ( ...

  2. oracle数据库查表_【Oracle数据库】表查询(一)

    Oracle数据库的简单查询 本文使用到的数据表如下图: 表名为 EMP .其中,empno为员工号,empname为员工姓名,job为员工岗位,mgr为该员工上司的员工号,hiredate是入职日期 ...

  3. oracle数据库锁表查询,解锁,kill缩表进程

    (1)锁表查询的代码形式如下: select count(*) from v$locked_object; select * from v$locked_object; (2)查看哪个表被锁 ---不 ...

  4. oracle数据库单表查询相关练习题及答案写法

    drop table PRODUCT cascade constraints; create table PRODUCT ( id         NUMBER not null,    --主键 p ...

  5. 查看oracle数据库启动状态,Oracle数据库的状态查询

    1 状态查询 启动状态 SQL语句 结果 nomount select status from v$instance; STARTED select open_mode from v$database ...

  6. oracle 游标查询数据库,Oracle数据库使用游标查询结果集所有数据

    --Oracle使用游标查询结果集所有数据 DECLARE myTabelName NVARCHAR2(200):=''; --表名 myTableRowComment NVARCHAR2(200): ...

  7. ORACLE数据库多表关联查询效率问题解决方案

    ORACLE数据库多表关联查询效率问题解决方案 参考文章: (1)ORACLE数据库多表关联查询效率问题解决方案 (2)https://www.cnblogs.com/baib/p/5086777.h ...

  8. java metadata 使用_java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMet ...

  9. Oracle 数据库整理表碎片

    Oracle 数据库整理表碎片 转载:http://kyle.xlau.org/posts/table-fragmentation.html 表碎片的来源 当针对一个表的删除操作很多时,表会产生大量碎 ...

最新文章

  1. 【2012年华为校园招聘软开上机-成都】字母转换、统计单词个数
  2. proc文件系统探索 之 根目录下的文件[七]
  3. Windows平台下安装Hadoop
  4. 求一个数是几位数,并求每位数相加的和
  5. C语言基础专题 - 通过案例历学 - 共用体
  6. 【问题记录】阿里云轻量云服务器Ubuntu安装图形化桌面+远程连接
  7. Oracle 字符集
  8. 【pyTranscriber】开源免费语音转字幕软件及替代方案
  9. xcode13 找不到图片Slicing入口
  10. 平行云CEO 李岩:CloudXR ,开启通往元宇宙的通道
  11. 【干货】JavaScript 资源大全
  12. 西雅图“货拉拉”融资$750万,“货运Uber”会成为下一个风口吗?
  13. 如何打造3D立体世界?跟随图片一同探寻
  14. Excel2010数据透视表1
  15. 软通python机试_软通机试练习题
  16. 影像科dsa为什么必须买维修保险_为什么大家对影像科了解得那么少呢?
  17. 数字IC设计实现之hold violation修复大全
  18. 儿童游戏html5,H5儿童小游戏的设计与探索
  19. 罗振宇折戟创业板/ B站回应HR称用户是Loser/ 腾讯罗技年内合推云游戏掌机...今日更多新鲜事在此...
  20. 全球最大的云计算平台GEE(Google Earth Engine)正确的学习姿势(1)

热门文章

  1. 【图像处理】纹理检测算法
  2. 【通知】有三AI项目研发组成员招收条件及可对接业务暂行方案
  3. 有三AI正式跨入2.0,诚邀参与内容创作以及广告须知
  4. 中国超导产业投资风险及应用前景调研报告2021版
  5. 全球及中国增强现实产业战略布局及运营前景决策分析报告2021-2027年
  6. 《数据结构》第01章在线测试
  7. HTTP代理如何正确处理Cookie
  8. java综合面试题_综合性18道面试官必问经典Java面试题!
  9. Lockey的沙雕低错集锦(未完待续~自己提升用)
  10. Mysql数据备份恢复及主从同步