数据库内连接与外连接
数据库中涉及两个表之间的数据查询通常使用连接的方法实现。连接分为内连接和外连接。
内连接:
指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。
外连接:
连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。
左外连接:
左边表数据行全部保留,右边表保留符合连接条件的行
右外连接:
右边表数据行全部保留,左边表保留符合连接条件的行
全外连接:
左外连接 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.AOracle 支持另一种写法
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.AOracle 支持的另外一种写法
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.AOracle支持的另一种写法
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
数据库内连接与外连接相关推荐
- 数据库内连接和外连接
内连接 内连接使用关键字INNER JOIN 也可以简写成JOIN:内连接只返回两个表中匹配的数据. SELECT a.id, a.name,b.price FROM table1 AS a INN ...
- 数据操作语言:连接查询-外连接
为什么要使用外连接 如果说陈浩是一名临时人员, 没有固定的部门]编制,那么我们想查询每名员工和他的部门门名称,用内连接就会漏掉陈浩,所以要引入外连接的语法才能解决这个问题 外连接简介 外连接与内连接的 ...
- SQL中内连接、外连接、交叉连接
SQL中内连接.外连接.交叉连接 SQL连接可以分为内连接.外连接.交叉连接. 数据库数据: book表 ...
- 【MySQL】(图解)快速理解内连接、外连接、左连接、右连接
[1] 示例数据 用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接). ...
- mysql内连接和外连接的区别_内连接、外连接的区别
先来看一下,内连接的语法: SELECT XXX FROM XXX INNER JOIN XXX ON XXX; 这里 INNER 可以省略,在上一篇博客中我们对于笛卡尔积现象的研究中(http:/ ...
- mysql 多表既有内连接又有外连接_MySQL 多表查询中的内连接和外连接
一般情况下一个网站的数据库通常会有多张数据表组成,这些数据表分别存储网站不同区域的内容.数据表之间可以用类似 ID 的字段来关联,在查询的时候可以通过一条语句来查询多张表的内容.例如 论坛的数据库,帖 ...
- 详解SQL Server连接(内连接、外连接、交叉连接)
在查询多个表时,我们经常会用"连接查询".连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系 ...
- 数据库的内连接和外连接区别?
简单来讲,随便来个例子: A表 B表 id name id name 1 a 1 b 2 b ...
- mysql外连接插座_深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接...
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和 ...
最新文章
- 沙盘正在注销进程start_进程,线程,多线程
- BCP导入导出 (GOOD)
- Docker视频发布
- 老男孩为网友工作疑难问题解答一例
- Session 'app': Error Installing APK
- TCP状态中 time_wait 的作用?
- 简单使用Git和Github来管理自己的代码和读书笔记
- asp.net core 错误定位 vs2017 远程调试部署在centos上的asp.net core程序
- Ext.tree.TreePanel 对复选框的处理(Tree)
- 4.3.1 jQuery基础(2)
- airpods pro连接安卓声音小_airpods pro 麦克风声音小
- 传奇世界凤凰登陆器格式说明
- CRichEditDoc下保存文档出现\rtf1\ansi\ansicpg936\deff0的解决方法
- supervisor 使用详解
- 防火墙基础配置(二)
- 【JavaScript】笑话生成器
- 参加数学建模比赛小结
- 在ArcGIS中创建Python工具(三)
- 比特位计数--C++ bitset 用法
- 【python】Twisted网络编程