参考链接(非常棒)


摘要

下面主要以两个例子进行说明:


例子1:


  表A结构如下:  

  1. select * from A
  |

  表B结构如下:  

  1. select * from B
  

 两个表要做连接,就必须有个连接字段,在A表中的Aid和B表中的Bnameid就是两个连接字段。

  下图3说明了连接的所有记录集之间的关系:

  


图3:连接关系图

要注意上图中标志的数字

  现在我们对内连接和外连接一一讲解。

  1.内连接:利用内连接可获取两表的公共部分的记录,即图3的记录集C

  语句如下:

  1. Select * from A JOIN B ON A.Aid=B.Bnameid
  运行结果如下图4所示:

  
图4:内连接数据-共8条记录

  其实select * from A,B where A.Aid=B.Bnameid与Select * from A JOIN B ON A.Aid=B.Bnameid的运行结果是一样的。

  2.外连接:外连接分为两种,一种是左连接(Left JOIN)和右连接(Right JOIN)

  (1)左连接(Left JOIN):即图3公共部分+记录集A1。

  语句如下:

  1. select * from A Left JOIN B ON A.Aid=B.Bnameid
  运行结果如下图5所示:

  
图5:左连接数据

  结论:内连接得到的数据+左边表格的4条数据(1,4,5,9)

  (2)右连接(Right JOIN):即图3公共部分+记录集B1

  语句如下:

  1. select * from A Right JOIN B ON A.Aid=B.Bnameid
  运行结果如下图6所示:

  
图6:右连接数据

   结论:内连接得到的数据+右边表格的1条数据(11)


  其他说明:

  1.  select * from B Left JOIN A ON A.Aid=B.Bnameid
等价于
  1. select * from A Right JOIN B ON A.Aid=B.Bnameid

例子2:

select * from test1;
select * from test2;
内连接:select * from test1 t1 join test2 t2 on t1.aa = t2.xx; 
左连接:select * from test1 t1 left join test2 t2 on t1.aa = t2.xx;

有连接:select * from test1 t1 right join test2 t2 on t1.aa = t2.xx;


博客:
  淘宝-代做毕设:



【Oracle学习笔记-4】内连接和外连接的区别的更多相关文章

  1. mysql学习笔记(七)—— MySQL内连接和外连接

        MySQL内连接(inner join on) MySQL的内连接使用inner join on,它的效果跟使用where是一样的,如果联结的是两个表,那么需要左右的条件或者说字段是需要完全匹 ...

  2. Oracle内连接、外连接、右外连接、全外连接小总结

    数据库版本:Oracle 9i 表TESTA,TESTB,TESTC,各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 ...

  3. Oracle 内连接和外连接

    内连接用于返回满足连接条件的记录:而外连接则是内连接的扩展,它不仅会返回满足连接条件的所有记录,而且还会返回满足不满足连接条件的记录!从Oracle9i开始,可以在From 子句中指定连接语法.语法如 ...

  4. oracle中的内连接和外连接区别

    表t_user1,t_user2,t_user3,各有id,name两列 id name 1 10A 2 20A id name 1 10B 3 30B id name 1 10C 4 40C 连接分 ...

  5. oracle 内连接、外连接、自然连接、交叉连接练习

    oracle 内连接.外连接.自然连接.交叉连接练习 --查询员工信息 select * from emp; --查询部门信息 select * from dept; --需求:查询员工姓名.薪资和所 ...

  6. oracle表内连接和外连接

    n  概述 表连接分为内连接和外连接 n  内连接 内连接实际上就是利用where子句对两张表形成的笛卡尔集进行筛选,我们前面学习的查询都是内连接,也是在开发过程中用的最多的连接查询. 基本语法: s ...

  7. 【Oracle】内连接、外连接、(+)的使用

    表各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 40C 连接分为两种:内连接与外连接. A.内连接 内连接,即最常见 ...

  8. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  9. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

随机推荐

  1. ZMMR106-批量更新PO交货日期

    ************************************************************************ Title : ZMMR106 ** Applicat ...

  2. ZSDR100 跑原材料MRP

    *&---------------------------------------------------------------------**& Report ZSDR100*&a ...

  3. 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)

    递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...

  4. left join测试验证之一

    $ sqlite3 a.dbSQLite version 3.8.1 2013-10-17 12:57:35Enter ".help" for instructionsEnter ...

  5. 获取元素高度及定位js

    <script type="text/javascript">                                   $(window).scroll(f ...

  6. js如何把字符串转换成json数据的方法

    js如何把字符串转换成json数据的方法 function strtojson(str){ var json = eval('(' + str + ')'); return json; } 方法二 f ...

  7. Codeforces Round #104 (Div. 1)

    A.Lucky Conversion 题意 给定两个长度为 \(N(N \le 10^5)\) 且由4和7构成的 \(a, b\)串 对 \(a\) 可以有两种操作: 交换两个位置的字符; 改变一个位 ...

  8. px em rem在WEB前端开发中的区别

    我们都知道基于像素的字体大小所用的单位是px,但是随着响应式设计的不断火热,基于相对字体大小的单位em变开始流行起来.当然,rem也在Web前端开发人员讨论如何更好设置字体大小的讨论话题之列.是不是需 ...

  9. Windows7下QT5开发环境搭建 分类: QT开发 2015-03-09 23:44 65人阅读 评论(0) 收藏

    Windows7下QT开法环境常见搭配方法有两种. 第一种是:QT Creator+QT SDK: 第二种是:VS+qt-vs-addin+QT SDK: 以上两种均可,所需文件见QT社区,QT下载地 ...

  10. C中scanf/gets/fgets的区别

    功能:同样是获取字符串. 区别: scanf 遇到空格/回车/Tab键认为输入结束, 但是空格/回车/Tab键仍会留在输入的缓冲区中.常见的是使用getchar(),处理scanf的后事:如果想要清除 ...