Oracle 的内连接、外连接、自连接、左连接、右连接

http://www.cnblogs.com/star-studio/archive/2011/06/25/2090000.html

内连接     (JOIN 
SELECT a.*,b.* FROM table_1 a,table_2 b WHERE a.name=b.name --写法一
SELECT a.*,b.* FROM table_1 a JOIN table_2 b ONa.name=b.name --写法二
SELECT a.*,b.* FROM table_1 a  INNER JOIN table_2 b ONa.name=b.name --写法三


外连接   外连接有三种方式  左连接、 右连接、 全连接

左连接   LEFT JOIN) 左连接是根据最左表的记录,在被连接右表中找出符合条件的记录与之匹配,找不到与左表匹配的,用null填充
SELECT a.*,b.*FROM table_1 a LEFT JOIN table_2 b ONa.name=b.name--左连接写法一
SELECT a.*,b.*FROM table_1 a LEFT OUTER JOIN table_2 b ONa.name=b.name--左连接写法二
SELECT a.*,b.*FROM table_1 a, table_2 b  where  a.name=b.name(+) --左连接写法三


右连接   RIGHT JOIN) 右连接则是根据最右表的记录,在被连接的左表中找出符合条件的记录与之匹配,找不到匹配的,用null填充
SELECT a.*,b.*FROM table_1 a RIGHT JOIN table_2 bON a.name=b.name--右连接写法一
SELECT a.*,b.*FROM table_1 a RIGHT OUTER JOIN table_2 b ON a.name=b.name--右连接写法二
SELECT a.*,b.*FROM table_1 a , table_2 b  where  a.name(+)=b.name --连接写法三

全连接   FULL JOIN返回符合条件的所有表的记录,没有与之匹配的,用null填充
SELECT*FROM table_1 a FULL JOIN table_2 b ONa.name=b.name--全连接写法一
SELECT a.*,b.*FROM table_1 a FULL OUTER JOIN table_2 b ONa.name=b.name--全连接写法二 


交叉连接  CROSS JOIN 笛卡尔积,结果集的记录数将等于第一个表的记录数乘以第二个表中的记录数。
SELECT a.*,b.*FROM table_1 a CROSS JOIN table_2 b --交叉连接
SELECT a.*,b.*FROM table_1 a,table_2 b --内连接


自连接   连接的表都是同一个表。同样可以有内连接、外连接各种组合方式,按实际应用去组合。

SELECT a.*,b.*FROM table_1 a,table_1 b WHERE  a.[name]=b.[name] --连接的两表是同一个表,别称不一样
SELECT a.*,b.*FROM table_1 a  LEFT  JOIN table_1 b ON a.[name]=b.[name]--左连接写法
等等


自然连接  

自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果

SELECT a.*,b.* FROM table_1 a NATURAL JOIN table_2 b   

自然连接等效于内连接

SELECT a.*,b.* FROM table_1 a JOIN table_2 b ON a.name=b.name  


也可以将自然连接理解为内连接的一种。
有关自然连接的一些注意事项:
(1).如果做自然连接的两个表的有多个字段都满足有相同名称个类型,那么他们会被作为自然连接的条件。
(2).如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值