All things are difficult before they are easy. 没有软件的裸机是一具僵尸,没有硬件的软件是一个幽灵。2012,专注于Linux和C语言,关注自动化、性能测试,关注开源社区和开源测试工具、方法,尝试测试团队管理!

内连接与外连接,左连接于右连接(SQL)

上一篇 / 下一篇  2010-03-08 23:09:50 / 个人分类:数据库

看网站代码,经常可以看到在Oracle中使用左连接右连接的情况,现正整理一下这方面的基本知识。

连接是指将关系数据库中的两个表根据内容中的一定的条件连接成一个表.

内连接是最常用的链接,也叫等值链接,最常见的格式是:
SELECT a.*, b.* FROM TA as a,TB as b WHERE a.id=b.id
或者用inner join: 
SELECT a.*, b.* FROM TA as a inner join TB as b ON a.id = b.id

外连 接则分为"左外连接(左连接)","右外连接(右连接)"两种情况: left join / right join
在Oracle PL-SQL,左连接和 右连接以如下方式来实现
查看如下语句:
SELECT emp_name, dept_name FORM. Employee, Department WHERE Employee.emp_deptid(+) = Department.deptid
SQL使用了右连接,即“(+)”所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配,也就是说上例中无论会不会出现某个部门没有一个员工的 情况,这个部门的名字都会在查询结果中出现。    反之:
SELECT emp_name, dept_name FORM. Employee, Department WHERE Employee.emp_deptid = Department.deptid(+)
则是左连接,无论这个员工有没有一个能在 Department表中得到匹配的部门号,这个员工的记录都会被显示 。

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
select A.*, B.* from A left join B on A.aID = B.bID
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将 会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).B表记录不足的地方均为NULL.
select A.*, B.* from A right join B on A.aID = B.bID
和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

参考资料:http://www.cnblogs.com/pcjim/articles/799302.html

TAG: join Oracle oracle SQL sql 内连接 外连接 左连接 右连接

 

评分:0

我来说两句

smile665

smile665

Stay hungry, stay foolish. 得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。

日历

« 2024-04-25  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 955681
  • 日志数: 220
  • 建立时间: 2008-11-06
  • 更新时间: 2012-10-06

RSS订阅

Open Toolbar