ORACLE 各种连接
数据说明:
select * from dave;
ID NAME
8 安庆
1 dave
2 bl
1 bl
2 dave
3 dba
4 sf-express
5 dmm
select * from b1;
ID NAME
1 dave
2 bl
3 big bird
4 exc
9 怀宁
1. inner join(join)
join默认为inner join.
以下3种写法的效果是一致的:
select * from dave a inner join b1 b on a.id = b.id;
select * from dave a join b1 b on a.id = b.id;
select * from dave a, b1 b where a.id = b.id;
ID NAME ID NAME
1 dave 1 dave
2 bl 2 b1
1 bl 1 dave
2 dave 2 b1
3 dba 3 big bird
4 sf-express 4 exc
自然连接natural join
寻找数据类型和列名相同的字段,自动将他们连接起来,并返回所有符合条件的结果。
下面两种写法的效果是一致的:
select * from dave a natural join b1 b;
select a.id, b.name from dave a join b1 b on a.id = b.id and a.name = b.name;
ID NAME
1 dave
2 bl
注意:1. 如果自然连接的两个表有多个字段满足相同名称和类型,则会作为自然链接的条件
2. 如果数据类型不同,则会报错。
2. Outer join
LEFT JOIN /RIGHT JOIN/FULL JOIN. 通常省略OUTER。
(+)也可以用来表示外连接。
(一)+操作符只能在where子句中,不能与outer join同时使用。
(二)+操作符只能执行外连接,如果在where中包含多个条件,则所有条件都包含+操作符。
(三)+操作符只适用于列,而不能用在表达式上。
(四)+操作符不能与or in操作符一起使用。
(五)操作符只能用于实现左外连接和右外连接,不能用于全外连接。
2.1 左外连接left join +
+ 表示补充,哪个个表有加号,这个表就是匹配表。所以加号写在右表,左表就是全部显示,故是左连接。
以下三种写法的效果是一致的:
select * from dave a left join b1 b on a.id = b.id;
select * from dave a left outer join b1 b on a.id = b.id;
select * from dave a ,b1 b where a.id = b.id(+); ID NAME ID NAME
1 bl 1 dave
1 dave 1 dave
3 dba 3 big bird
4 sf-express 4 exc
2 dave 2 bl
2 bl 2 bl
5 dmm --没有匹配到,为null
8 安庆 --没有匹配到,为null
2.2 右外连接right join +
以下三种写法的效果是一致的:
select * from dave a right join b1 b on a.id = b.id;
select * from dave a right outer join b1 b on a.id = b.id;
select * from dave a ,b1 b where a.id(+) = b.id; ID NAME ID NAME
1 dave 1 dave
2 bl 2 bl
1 bl 1 dave
2 dave 2 bl
3 dba 3 big bird
4 sf-express 4 exc
9 怀宁 --没有匹配到,为null
2.3 全外连接(full outer join/full join)
左表和右表都不做限制,所有的记录都显示,两表不足的地方用null填充。全外连接不支持(+)这种写法。
select * from dave a full join b1 b on a.id = b.id; ID NAME ID NAME
8 安庆 --NULL
1 dave 1 dave
2 bl 2 bl
1 bl 1 dave
2 dave 2 bl
3 dba 3 big bird
4 sf-express 4 exc
5 dmm --NULL
--NULL 9 怀宁
---------20161125补充内容:
insert into b1 values('','test'); insert into b1 values('','test02'); select * from dave left join b1 on dave.id = b1.id;
ID NAME ID NAME
1 bl 1 dave
1 dave 1 dave
2 dave 2 b1
2 bl 2 b1
3 dba 3 big bird
4 sf-express 4 exc
1 bl 1 test
1 dave 1 test
1 bl 1 test02
1 dave 1 test02
5 dmm null
8 安庆 null
ORACLE 各种连接的更多相关文章
- Oracle 左连接、右连接、全外连接、(+)号作用
分类: Oracle Oracle 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 外连接(Outer ...
- ArcGis设置到 Oracle 的连接
设置到 Oracle 的连接 地理数据 » 管理地理数据库 » Oracle 中的地理数据库 要建立从客户端计算机到 Oracle 数据库的连接,必须在客户端计算机上安装 Oracle 客户端应用程序 ...
- Oracle 左连接、右连接、全外连接、(+)号作用、inner join(等值连接) (转载)
Oracle 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 外连接(Outer Join) oute ...
- [转]使用Navicat for Oracle工具连接oracle的
使用Navicat for Oracle工具连接oracle的 这是一款oracle的客户端的图形化管理和开发工具,对于许多的数据库都有支持.之前用过 Navicat for sqlserver,感觉 ...
- Oracle 表连接方式分析 .
一 引言 数据仓库技术是目前已知的比较成熟和被广泛采用的解决方案,用于整和电信运营企业内部所有分散的原始业务数据,并通过便捷有效的数据访问手段,可以支持企业内部不同部门,不同需求,不同层次的用户随时获 ...
- Oracle左连接、右连接、全外连接
Oracle 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 外连接(Outer Join) outer join则会返回每个满足 ...
- oracle表连接------>排序合并连接(Merge Sort Join)
排序合并连接 (Sort Merge Join)是一种两个表在做连接时用排序操作(Sort)和合并操作(Merge)来得到连接结果集的连接方法. 对于排序合并连接的优缺点及适用场景例如以下: a,通常 ...
- Oracle左连接、右连接、全外连接以及(+)号用法(转)
+:与附带的字段相连,和“+”相连的字段值,不管是否存在,都会展示 也就是带上相连接的字段 有数据了就显示,没数据就显示为null Oracle 外连接(OUTER JOIN) 左外连接(左边的表不 ...
- Oracle左连接,右连接
Oracle左连接,右连接 数据表的连接有: 1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制 ...
- 理解oracle中连接和会话
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp44 理解oracle中连接和会话 1. 概念不同:概念不同: 连接是指物 ...
随机推荐
- Mongodb插入记录
Mongodb下文档的数据结构和JSON基本一样. 所有存储在集合中的数据都是BSON格式. BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON. 插入文档 MongoDB ...
- C# MVC 自定义ActionResult实现EXCEL下载
前言 在WEB中,经常要使用到将数据转换成EXCEL,并进行下载.这里整理资料并封装了一个自定义ActionResult类,便于使用.如果文章对你有帮助,请点个赞. 话不多少,这里转换EXCEL使用的 ...
- 100. Same Tree
[题目] Given two binary trees, write a function to check if they are equal or not. Two binary trees ar ...
- div随意拖动小例子
<html> <head> <title> Drag Demo 1 </title> <style type="text/css&quo ...
- DataSet集合直接根据传入的类转List<T>集合
最近比较忙,好久没写博客了.个人感觉最好的进步就是写东西.哈哈. 一般我们使用ADO.net从数据库中读取数据返回的集合是DataSet类型的.有时候我们需要进行转换成List<T>集合. ...
- POJ 1061
题意: 两只青蛙在同一条纬度上,它们各自朝西跳,问它们要跳多少步才能碰面(必须同时到达同一点). 分析: 假设它们跳了t步才相遇,青蛙a初始坐标为x,青蛙b初始坐标为y,则跳了t步相遇后a的坐标为 x ...
- 第一次用golang写个小程序
1.下载go1.6并安装.我是win7系统(会自动添加GOOROOT环境变,自己建一个放go文件的工程目录并添加到环境变量中) 2.下载liteide并解压缩.(liteide查看菜单中也可编辑环境变 ...
- DOM操作 ——如何添加、移除、移动、复制、创建和查找节点等。
DOM操作 --如何添加.移除.移动.复制.创建和查找节点等. (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个 ...
- 一个Java复制目录的方法(递归)
/** * 将目标目录复制为指定目录(也可以用于复制文件) * @param src 源路径 * @param dest 目标路径 * @throws IOException */ public st ...
- 在linux中查询硬件相关信息
1.查询cpu的相关 a.查询CPU的统计信息 使用命令:lscpu 得到的结果如下: Architecture: x86_64 CPU op-mode(s): -bit, -bit Byte Ord ...