数据库中涉及两个表之间的数据查询通常使用连接的方法实现。连接分为内连接和外连接。


内连接:

指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

外连接:

连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。

左外连接:

左边表数据行全部保留,右边表保留符合连接条件的行

右外连接:

右边表数据行全部保留,左边表保留符合连接条件的行

全外连接:

左外连接 union 右外连接

例子:

数据库版本:Oracle 9i

表TESTA,TESTB,TESTC,各有A, B两列

A

B

001

10A

002

20A

A

B

001

10B

003

30B

A

B

001

10C

004

40C

连接分为两种:内连接与外连接。

A.内连接

内连接,即最常见的等值连接,例:

SELECT * 
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A

结果

A

B

A

B

001

10A

001

10B

B.外连接

外连接分为左外连接,右外连接和全外连接。

1.  左外连接 left outer join 或者 left join

左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

Oracle 支持另一种写法

SELECT * 
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A(+)

结果:

A

B

A

B

001

10A

001

10B

002

10B

三个表做左外连接

SELECT *
FROM TESTA 
LEFT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A
LEFT OUTER JOIN TESTC
ON TESTA.A=TESTC.A

Oracle 支持的另外一种写法

SELECT *
FROM TESTA,TESTB,TESTC
WHERE TESTA.A=TESTB.A(+)
AND TESTA.A=TESTC.A(+)

结果:

A

B

A

B

A

B

001

10A

001

10B

001

10C

002

20A

2. 右外连接 right outer join 或者 right join

右外连接是在等值连接的基础上加上被连接表的不匹配数据

SELECT *
FROM TESTA 
RIGHT OUTER JOIN TESTB 
ON TESTA.A=TESTB.A

Oracle支持的另一种写法

SELECT *
FROM TESTA,TESTB
WHERE TESTA.A(+)=TESTB.A

结果:

A

B

A

B

001

10A

001

10B

003

30B

3.全外连接 full outer join 或者 full join

全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上

SELECT * 
FROM TESTA 
FULL OUTER JOIN TESTB
ON TESTA.A=TESTB.A

全外连接的等价写法,对同一表先做左连接,然后右连接

SELECT  TESTA.*,TESTB.*
FROM TESTA
LEFT OUTER JOIN TESTB
ON TESTA.A=TESTB.A
UNION
SELECT
 TESTA.*,TESTB.*
FROM TESTB
LEFT OUTER JOIN TESTA
ON TESTA.A=TESTB.A

结果:

A

B

A

B

001

10A

001

10B

002

20A

003

30B

数据库内连接与外连接相关推荐

  1. 数据库内连接和外连接

    内连接 内连接使用关键字INNER JOIN  也可以简写成JOIN:内连接只返回两个表中匹配的数据. SELECT a.id, a.name,b.price FROM table1 AS a INN ...

  2. 数据操作语言:连接查询-外连接

    为什么要使用外连接 如果说陈浩是一名临时人员, 没有固定的部门]编制,那么我们想查询每名员工和他的部门门名称,用内连接就会漏掉陈浩,所以要引入外连接的语法才能解决这个问题 外连接简介 外连接与内连接的 ...

  3. SQL中内连接、外连接、交叉连接

    SQL中内连接.外连接.交叉连接 SQL连接可以分为内连接.外连接.交叉连接. 数据库数据:            book表                                      ...

  4. 【MySQL】(图解)快速理解内连接、外连接、左连接、右连接

    [1] 示例数据   用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接).    ...

  5. mysql内连接和外连接的区别_内连接、外连接的区别

    先来看一下,内连接的语法: SELECT  XXX FROM XXX INNER JOIN XXX ON XXX; 这里 INNER 可以省略,在上一篇博客中我们对于笛卡尔积现象的研究中(http:/ ...

  6. mysql 多表既有内连接又有外连接_MySQL 多表查询中的内连接和外连接

    一般情况下一个网站的数据库通常会有多张数据表组成,这些数据表分别存储网站不同区域的内容.数据表之间可以用类似 ID 的字段来关联,在查询的时候可以通过一条语句来查询多张表的内容.例如 论坛的数据库,帖 ...

  7. 详解SQL Server连接(内连接、外连接、交叉连接)

    在查询多个表时,我们经常会用"连接查询".连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系 ...

  8. 数据库的内连接和外连接区别?

    简单来讲,随便来个例子: A表                B表 id      name            id      name 1 a 1 b 2          b          ...

  9. mysql外连接插座_深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接...

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和 ...

最新文章

  1. 沙盘正在注销进程start_进程,线程,多线程
  2. BCP导入导出 (GOOD)
  3. Docker视频发布
  4. 老男孩为网友工作疑难问题解答一例
  5. Session 'app': Error Installing APK
  6. TCP状态中 time_wait 的作用?
  7. 简单使用Git和Github来管理自己的代码和读书笔记
  8. asp.net core 错误定位 vs2017 远程调试部署在centos上的asp.net core程序
  9. Ext.tree.TreePanel 对复选框的处理(Tree)
  10. 4.3.1 jQuery基础(2)
  11. airpods pro连接安卓声音小_airpods pro 麦克风声音小
  12. 传奇世界凤凰登陆器格式说明
  13. CRichEditDoc下保存文档出现\rtf1\ansi\ansicpg936\deff0的解决方法
  14. supervisor 使用详解
  15. 防火墙基础配置(二)
  16. 【JavaScript】笑话生成器
  17. 参加数学建模比赛小结
  18. 在ArcGIS中创建Python工具(三)
  19. 比特位计数--C++ bitset 用法
  20. 【python】Twisted网络编程

热门文章

  1. 那些年我们看过的3D动画电影
  2. 烟台大学计算机专业宿舍,2021年烟台大学新生宿舍条件和宿舍环境图片
  3. android webview测试
  4. iPad触屏笔哪个牌子好用?Apple Pencil的平替笔
  5. 正厚知识 | 人工智能会取代人类吗?(下)
  6. Android手势密码view笔记(一)
  7. 简繁体转换---Python自然语言处理(5)
  8. C/C++中的kbhit()函数与getch()函数
  9. java中的僵死进程,僵死(Zombie)进程
  10. Qt新弹窗不响应键盘按键,难道也是无焦点?