一、内连接和外连接    内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录,语法如下:

  1. select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;

inner join表示内连接、left join表示左外连接、right join表示右外连接、full join表示全连接;on用于指定连接条件。 注意:如果使用form内、外连接,则必须使用on操作符指定连接条件;如果使用(+)操作符连接,则必须使用where指定连接条件。 1、内连接    内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接,例如:

  1. select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;

2、左外连接 左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行,例如:

  1. select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;

3、右外连接 右外连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行,例如:

  1. select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;

4、全连接 全连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的其他行,例如:

  1. select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;

5、(+)操作符 在oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的,尽管可以使用操作符(+)执行外连接操作,但是oracle9i开始oracle建议使用outer join执行外连接,使用(+)操作符执行外连接的语法如下:

  1. select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;

注意:

  • 当使用(+)操作符执行外连接时,应当将该操作符放在显示较少行(完全满足连接条件行)一端。
  • (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
  • 当使用(+)操作符执行外连接时,如果在where语句中包含多个条件,则必须在所有的条件中都包含(+)操作符。
  • (+)操作符只能适用于列,而不能适用于表达式。
  • (+)操作符不能与or和in操作符一起使用。
  • (+)操作符只能用于左外连接和右外连接,不能用于实现完全连接。

(1)、使用(+)操作符执行左外连接 当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端,示例如下:

  1. select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);

(2)、使用(+)操作符执行右外连接 当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的右边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到左边表的一端,示例如下:

select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id;

原文http://shawnfree.iteye.com/blog/355837

Oracle连接查询的更多相关文章

  1. oracle 连接查询,和(+)符号的用法

    --连接查询 左链接.右链接,全链接 --内链接select e.account 用户名, e.empname 名称, c.comname 公司名称  from employee e inner jo ...

  2. Oracle 连接查询

    1.什么是连接查询?(B) 很多时候我们需要查询的数据并不是来源于同一张表,而是来源于多张表,而这种一个查询需要对多张表进行操作,就成为连接查询. 2.如何进行表的连接查询? 连接查询有两种方式:SQ ...

  3. Oracle连接查询小结

    表TESTA,TESTB,TESTC,各有A, B两列 A B 001 10A 002 20A A B 001 10B 003 30B A B 001 10C 004 40C 连接分为两种:内连接与外 ...

  4. Oracle连接查询内容整理

    --内连接--select t.*,b.bumenmc from T_HQ_RYXX t,t_hq_bm b where t.bum = b.bumenbm--select * from t_hq_r ...

  5. 2014年1月24日 Oracle 连接查询与子查询

    1.乘积连接:   源表.源数据交叉链接,结果集数量为源数据之间的乘积 2.相等链接:   通过where关联几个数据源中的某一字段进行链接 3.自链接   自己链接自己 SSF A a1, A a2 ...

  6. Oracle学习笔记五 SQL命令(三):Group by、排序、连接查询、子查询、分页

    GROUP BY和HAVING子句 GROUP BY子句 用于将信息划分为更小的组每一组行返回针对该组的单个结果 --统计每个部门的人数: Select count(*) from emp group ...

  7. oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图

        多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所 ...

  8. oracle——外连接查询

    一.问题描述 有时我们为了保留某个表中的数据,而该表中的数据在另外一个关联表中未必都存在对应,此时就应该试用外连接查询. 比如:两个表,产品表和子产品表 注:子产品的parent_product_id ...

  9. 【学亮开讲】Oracle内外连接查询20181119

    --内连接查询 --需求:查询显示业主编号.业主名称.业主类型名称 select os.id 业主编号,os.name 业主名称,ot.name 业主类型名称 from t_owners os,t_o ...

随机推荐

  1. Beta版本冲刺———第二天

    会议照片: 项目燃尽图: 1.项目进展: 昨天的困难:分数排行榜的设计 今天解决的进度:完成了界面优化以及建立新的排行榜选项卡界面. 明天要做的事情:分数排行榜的功能设计 2.每个人每天做的事情 郭怡 ...

  2. android 之 Toast通知的使用

    1.默认效果:   代码: Toast.makeText(getApplicationContext(), "默认Toast样式",      Toast.LENGTH_SHORT ...

  3. SharedPreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它是Android数据持久化方法中最简单的一种. 其本质是基于XML文件存储key-value键值对数据,通常用 ...

  4. xgboost

    xgboost后面加了一个树的复杂度 对loss函数进行2阶泰勒展开,求得最小值, 参考链接:https://homes.cs.washington.edu/~tqchen/pdf/BoostedTr ...

  5. jquery.ui.widget详解

    案例详解 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  6. java中i=i++字节码分析

    原文出处: Ticmy 1 2 int i = 0; i = i++; 结果还是0为什么? 程序的执行顺序是这样的:因为++在后面,所以先使用i,"使用"的含义就是i++这个表达式 ...

  7. 59.Android开源项目及库 (转)

    转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...

  8. 【BZOJ-4213】贪吃蛇 有上下界的费用流

    4213: 贪吃蛇 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 58  Solved: 24[Submit][Status][Discuss] Desc ...

  9. 【BZOJ-3589】动态树 树链剖分 + 线段树 + 线段覆盖(特殊的技巧)

    3589: 动态树 Time Limit: 30 Sec  Memory Limit: 1024 MBSubmit: 405  Solved: 137[Submit][Status][Discuss] ...

  10. macOS 安装 pip

    安装好wget之后: wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py 终于可以愉快的pip了~