2019独角兽企业重金招聘Python工程师标准>>>

简单连接:

简单连接仅仅是通过select子句和from子句来连接多个表,其查询结果是一个通过笛卡尔积所生成的表。在实际需求中,由于笛卡尔积包含了大量的冗余信息,一般没有任何意义,通常为了避免这种情况,在select语句提供一个连接条件,过滤无意义的数据。例如:

--学生表和性别表关联,拿学生表的性别id和性别表的id来关联过滤
select * from student s,gender g where s.gender = g.id;

Join连接:

1.内连接

内连接是一种常见的连接,用关键字inner join.innner可以省略,也就是说,只使用join连接的为内连接。连接的条件必须用on来进行条件匹配。如果还想进一步限制,则可以加where条件句。

如:

select * from student s join gender g on s.gender = g.id where s.name='张三';

2.自然连接

自然连接与内连接的功能类似,在使用自然连接查询多个表时,oracle会降低一个表中的那些列与第二个表中具有相同名称的列进行连接。在自然连接中,用户不需要明确指定进行连接的列。系统自动完成这一任务。自然连接在实际应用中很少。因为有个限制条件,连接的各个表之间必须有相同名称的列。但这在实际应用中可能和实际引用的含义发生矛盾。

3.外连接

外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,还列出左表(左外连接时候)、右表(右外连接时)或两个表(全外连接时)中所有复合搜索条件的数据行。完全外连接相当于同时执行一个左外连接和一个右外连接。然后将结果集合并,并消除重复记录行。

其中外连接还可以采用一种写法:

--这两种写法一致(右外连接)
select * from student s,gender g where s.gender(+) = g.id;
select * from student s right join gender g on s.gender = g.id;
--这两种写法一致(左外连接)
select * from student s,gender g where s.gender = g.id(+);
select * from student s left join gender g on s.gender = g.id;

4.自连接

自连接是在from子句中两次指定了同一个表,为了在其他子句中区分,分别为表指定了表别名。这样oracle就可以将两个表看作是分离的两个数据源,并且从中获取相应的数据。

转载于:https://my.oschina.net/kkrgwbj/blog/539799

oracle中的多表连接相关推荐

  1. ORACLE中的多表连接查询

    这篇文章讲述了多表之间连接,包括内连接.外连接,如有错误或者不妥之处,还请各位大佬批评指正. 连表 SQL中操作多个表,以便可以查询到所需数据,其中包括内连接.外链接.等值连接.非等值连接.左连接.右 ...

  2. MySQL中的多表连接

    MySQL中的多表连接 当查询的数据并不是来源一个表时,需要使用多表链接操作完成查询.根据不同表中的数据之间的关系查询相关联的数据. 一.语法结构 使用一个表在多个表中查询数据: Where子句中写连 ...

  3. Oracle查询所有序列;[oracle中如何创建表的自增ID(通过序列);oracle sql语句大全

    Oracle查询所有序列 oracle sql语句大全 oracle中如何创建表的自增ID(通过序列)

  4. oracle 判断数字是否连续,oracle中 如何 判断 表中字段是否为 连续的数字,例如‘3333333333',‘44444444’...

    oracle中 如何 判断 表中字段是否为 连续的数字,例如'3333333333','44444444' (2011-09-23 15:42:45) 标签: 判断 字段是否为 连续的数字 杂谈 分类 ...

  5. 批量查找Oracle中多个表中同一字段的长度

    批量查找Oracle中多个表中同一字段的长度 select t_tables.table_name,t_column.column_name,t_column.data_length,'alter t ...

  6. 【DB笔试面试619】在Oracle中,举例说明“连接因式分解(Join factorization,JF)”查询转换。...

    ♣题目 部分 在Oracle中,举例说明"连接因式分解(Join factorization,JF)"查询转换. ♣答案部分 1LHR@orclasm > SELECT /* ...

  7. oracle在线的表名修改,oracle中如何修改表名

    当原来的数据所在表不想被删除的时候我们就需要重新创建一个一个相同表名的表,但是为了更好的区分,因此我们就需要修改表名,那么你知道在oracle中如何修改表名吗?现在我们一起去看看吧. answer1: ...

  8. Oracle 优化器_表连接

    概述 在写SQL的时候,有时候涉及到的不仅只有一个表,这个时候,就需要表连接了.Oracle优化器处理SQL语句时,根据SQL语句,确定表的连接顺序(谁是驱动表,谁是被驱动表及 哪个表先和哪个表做链接 ...

  9. Oracle练习:用表连接实现查询平均工资最高的部门信息

    Oracle练习 利用表连接查询平均工资最高的部门信息 当查询结果数据来自于多两张表时,需要使用特定的连接条件将两张表的记录连接在一起,这种语法"表链接". 在做查询平均工资最高的 ...

最新文章

  1. WPF实用指南二:移除窗体的图标
  2. 液晶12864COG 液晶模块串口/并口ST7565R带背3.3v 12864-14显示屏
  3. 前滴滴产品总监刘滢:从这里了解新零售的本质
  4. everedit选择_EverEdit(文本编辑器)
  5. ERROR Invalid options in vue.config.js: “baseUrl“ is not allowed
  6. ValueError: check_hostname requires server_hostnamejie解决方案
  7. optional转化为set_JDK8新特性--学习笔记(OptionalCollectors)
  8. 19春学期《计算机应用基础》123,福师11春学期《计算机应用基础》在线作业一...
  9. java word2007_Java解析word2007、Excel2003和Excel2007
  10. 在FFMPEG中使用libRTMP的经验
  11. Windows10右键没有新建文本文件
  12. FileUpload类中FileUpload1.FileName和FileUpload1.PostedFile.FileName的区别
  13. 如何斩获KDD Cup 2020两冠一季?美团广告团队公开解决方案
  14. Android ORC文字识别之识别身份证号等(附源码)
  15. java jlabel 字体大小_java-如何在更改字体大小时更改JLabel的大小...
  16. RMAN duplicate 方式 做个备库
  17. 知道IP入侵个人的电脑
  18. FTP服务器异地备份文件,ftp异地备份
  19. 家装企业如何开展网络营销?
  20. Android开发自定义UI组件

热门文章

  1. 开课吧:继承是什么?继承的基础有什么?
  2. 若只有4KB内存可用,该如何打印数组中所有重复的元素
  3. 关于header('location:url')的一些说明,php缓冲区
  4. [WCF编程]8.服务实例的生命周期
  5. 用oledb导出数据到excel
  6. 【二叉树迭代版前序遍历】LeetCode 144. Binary Tree Preorder Traversal
  7. 【回文串2】LeetCode 9. Palindrome Number
  8. Vue模板,数据和指令
  9. ubuntu16.04装机7:安装VScode
  10. vuex 在typescript中的写法