数据库版本:Oracle 9i
表TESTA,TESTB,TESTC,各有A, B两列
连接分为两种:内连接与外连接。
A.内连接
内连接,即最常见的等值连接,例:
SELECT *
FROM TESTA,TESTB
WHERE TESTA.A=TESTB.A

结果
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(+)
结果:
三个表做左外连接
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(+)
结果:
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
 
结果:
 
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
 
结果:
 
 

 

转载于:https://blog.51cto.com/terryli/520834

Oracel中连接的总结(一)相关推荐

  1. 理解oracle中连接和会话

    理解oracle中连接和会话 1.  概念不同:概念不同: 连接是指物理的网络连接. 在已建立的连接上,建立客户端与oracle的会话,以后客户端与oracle的交互都在一个会话环境中进行. 2.   ...

  2. 在Python中连接字符串的首选方法是什么?

    本文翻译自:Which is the preferred way to concatenate a string in Python? Since Python's string can't be c ...

  3. java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)

    * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...

  4. linux shell脚本字符串连接符,学习Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"= ...

  5. LJL-Solution-vss2005在项目中连接不上 解决方案

    vss2005 在单独打开的时候可以连接上,在项目中连接不上的解决方案: 打开vs-->工具-->选项--->源代码管理--->当前源代码管理插件:改为 Microsoft V ...

  6. Web.config中连接字符串的加密和解密

    Web.config中连接字符串的加密和解密  我们采用命令行的方式进行加密和解密.使用ASP.NET2.0提供的命令行工具aspnet_regiis.exe,该应用程序位系统目录下Microsoft ...

  7. Winform中连接Mysql8并查询表中数据进行显示

    场景 在Winform中连接mysql数据库,并查询某个表中的所有数据,在datagridview中显示数据. 在连接之前,需要先搭建mysql8的数据库环境. Docker中部署Mysql8数据库: ...

  8. ASP.NET中连接Sqlserver数据库时提示:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc

    场景 在Visual Studio 2013中连接 SqlServer数据库时提示: 未能加载文件或程序集"Microsoft.SqlServer.Management.Sdk.Sfc 注: ...

  9. Linux C 中连接操作符##

    Linux C 中连接操作符## #include <stdio.h> #define test(x) test ## x #define DPRINT( fmt, args...) \ ...

最新文章

  1. 法大大刘谦:法务智能化创新实践与行业趋势
  2. 关于vs生成app错误提示,提醒Execution failed for task ':transformClassesWithDexForDebug'.
  3. 共享文件服务器迁移,服务器共享文件夹迁移
  4. 360互联网技术训练营第七期 -“遇见”PIKA
  5. Go语言学习Day02
  6. python识别出蓝色_OpenCVPython——无法检测蓝色对象
  7. 数据结构括号匹配代码_数据结构中的栈,你知道多少?
  8. python窗口怎么显示我输入的_Python分别用两个窗口显示和输入
  9. mysql case结合group+having使用
  10. 当要写验证性的代码时,利用git进行代码管理
  11. c语言 牛逼代码,装逼技巧:程序员如何用代码证明自己牛逼!
  12. C# 设置Word文本框中的文字旋转方向
  13. MySQL数据库 CPU飙升到100%
  14. 她做销售6年,从底薪3K转行程序员狂飙2W,用两年转行经历致想转行的你
  15. 抖音xlog算法解密过程
  16. win2012故障转移mysql集群_Windows 2012 系统搭建高可用故障转移集群
  17. Anaconda 安装错误的解决办法
  18. java在浏览器闪退_selenium chrome 浏览器闪退
  19. Java_awt_图形用户界面GUI简单应用
  20. php开发兴趣培训班,培训班学PHP,感觉兴趣越来越低,哎,真的很迷茫了!

热门文章

  1. Oracle中NUMBER类型如果不指定长度和小数点精度默认是多长
  2. Nginx下301重定向不带www的域名到带www的域名
  3. vue中mixin的一点理解
  4. http://blog.sina.com.cn/s/blog_5bd6b4510101585x.html
  5. 最优子结构(Optimal Substructure)
  6. 2015 10月21日 工作计划与执行
  7. Linux入门基础分享[一]
  8. android listview的一些设置
  9. 搜索引擎学习(七)解析查询
  10. python入门学习:4.if语句