ORACLE外连接小结(转载自wh62592855博客)
来源:互联网 发布:mate7电信没有4g 网络 编辑:程序博客网 时间:2024/05/19 04:27
ORACLE外连接小结~
分类: Oracle Dev 2009-11-22 20:40 4276人阅读 评论(1)收藏 举报
oracletablejoinsqlreference百度
好几次想用到外连接的时候都忘了具体的用法是怎样的,比如说(+)该加在等号的哪一端,或者LFET OUTER JOIN该用在整条语句中的哪个部分。今天正好又碰到一个相关的问题,借此机会总结一下,以后也方便查询,不用每次都去百度了。
- //table1和table2为两个测试表 随便插入几条数据
- SQL> select * from table1;
- ID NAME
- ---------- --------------------
- 1 wh
- 2 wp
- 3 wq
- SQL> select * from table2;
- ID NAME
- ---------- --------------------
- 4 wr
- 1 wh
- //正常查询
- SQL> select a.name,b.name
- 2 from table1 a,table2 b
- 3 where a.id=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- //显示出table1中的所有记录 table2中无相应记录则置NULL
- SQL> select a.name,b.name
- 2 from table1 a,table2 b
- 3 where a.id=b.id(+);
- NAME NAME
- -------------------- --------------------
- wh wh
- wq
- wp
- //显示出table2中的所有记录 table1中无相应记录则置NULL
- SQL> select a.name,b.name
- 2 from table1 a,table2 b
- 3 where a.id(+)=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- wr
- //呵呵,这里本想尝试一下全外连接,不过使用(+)好像不行
- SQL> select a.name,b.name
- 2 from table1 a,table2 b
- 3 where a.id(+)=b.id(+);
- where a.id(+)=b.id(+)
- *
- ERROR at line 3:
- ORA-01468: a predicate may reference only one outer-joined table
- //左外连接
- SQL> select a.name,b.name
- 2 from table1 a
- 3 left outer join table2 b
- 4 on a.id=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- wq
- wp
- //右外连接
- SQL> select a.name,b.name
- 2 from table1 a
- 3 right outer join table2 b
- 4 on a.id=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- wr
- //右外连接
- SQL> select a.name,b.name
- 2 from table2 b
- 3 right outer join table1 a
- 4 on a.id=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- wq
- wp
- //左外连接
- SQL> select a.name,b.name
- 2 from table2 b
- 3 left outer join table1 a
- 4 on a.id=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- wr
- //试一下FULL OUTER JOIN
- SQL> select a.name,b.name
- 2 from table2 b
- 3 full outer join table1 a
- 4 on a.id=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- wr
- wq
- wp
- SQL> select a.name,b.name
- 2 from table1 a
- 3 full outer join table2 b
- 4 on a.id=b.id;
- NAME NAME
- -------------------- --------------------
- wh wh
- wq
- wp
- wr
小结一下
左连接就是左边的表全有值,右边表的值可以为空(+)
右连接是左边表值可以为空(+),右边表的值全有
至于使用OUTER JOIN的方法就稍微直观一些了,LEFT就是显示左边的表的全部内容,RIGHT就是显示右边的表的全部内容,FULL就是两边表内容都全显示。
既然说到这了已经,那么再来看一下自然连接。
- //使用using子句指定两个表相关联的列
- //注:被using 子句所引用的列,在sql 语句中的任何地方不能使用表名或者别名作为前缀
- SQL> select a.name,b.name
- 2 from table1 a
- 3 join table2 b
- 4 using(id);
- NAME NAME
- -------------------- --------------------
- wh wh
- SQL> select name
- 2 from table1
- 3 natural join table2;
- NAME
- --------------------
- wh
- //这里好像不让指定别名
- SQL> select a.name,b.name
- 2 from table1 a
- 3 natural join table2 b;
- select a.name,b.name
- *
- ERROR at line 1:
- ORA-25155: column used in NATURAL join cannot have qualifier
最后,来看一下交叉连接,也就是笛卡尔积。
- SQL> select a.name,b.name
- 2 from table1 a
- 3 cross join table2 b;
- NAME NAME
- -------------------- --------------------
- wh wr
- wp wr
- wq wr
- wh wh
- wp wh
- wq wh
- 6 rows selected.
下面是几个容易让人误认为不一样的东西,其实不然。
inner join = join
left outer join = left join
right outer join = right join 0 0
- ORACLE外连接小结(转载自wh62592855博客)
- ORACLE外连接小结~ http://blog.csdn.net/wh62592855/article/details/4852908
- ORACLE外连接小结~
- ORACLE外连接小结~
- ORACLE外连接小结 .
- 转载自博客园
- 转载自博客园
- 转载自博客园
- Oracle自连接,外连接举例
- 转载自博客园:数字签名
- Oracle的外连接内连接和自连接
- jsp连接oracle小结
- oracle表自连接
- oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)
- oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)
- oracle多表查询(外连接,自连接)
- Spring AOP 学习小结---转载自ITeye
- Oracle 的内连接、外连接、自连接、左连接、右连接
- 不出100年,地球你将认不出(科技闹的)
- 10个对开发项目有害的编程习惯
- PMC为超大规模部署提供高性价比定制化服务器硬件
- python sqlserver 完整的例子
- Effective JavaScript Item 27 使用闭包而不是字符串来封装代码
- ORACLE外连接小结(转载自wh62592855博客)
- 2.6内核增加usb支持 - 配置简介
- 笔记-ARX实体遍历DXF方法
- linux开发使用时的一些小技巧集锦
- android RotateAnimation使用
- 关于JDK
- 国密算法(SM2,SM3,SM4)完善与算法辅助工具开发
- C++库和C库的区别
- 【POJ1882】Stamps,灵活多重背包,详细题意!!!(题解也有)