日期:2014-05-16  浏览次数:20465 次

有关Oracle外连接的详解
外联接。外联接可以是左向外联接、右向外联接或完整外部联接。    
  在   FROM   子句中指定外联接时,可以由下列几组关键字中的一组指定:     
  LEFT   JOIN   或   LEFT   OUTER   JOIN。    
  左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。  
   在oracle中+号放在=右边相当于左连接
   select distinct(p.person_id) from t_pbase_info p, t_pcontact_info c where p.person_id = c.person_id(+)
  RIGHT   JOIN   或   RIGHT   OUTER   JOIN。    
  右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
  在oracle中+号放在=左边相当于右连接
  select distinct(p.person_id) from t_pbase_info p, t_pcontact_info c where p.person_id(+) = c.person_id
  FULL   JOIN   或   FULL   OUTER   JOIN。    
  完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。      
  仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表中的任何行不匹配的行。而外联接会返回   FROM   子句中提到的至少一个表或视图的所有行,只要这些行符合任何   WHERE   或   HAVING   搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。      
  Microsoft   SQL   Server"   2000   对在   FROM   子句中指定的外联接使用以下   SQL-92   关键字:        
  LEFT   OUTER   JOIN   或   LEFT   JOIN         
  RIGHT   OUTER   JOIN   或   RIGHT   JOIN          
  FULL   OUTER   JOIN   或   FULL   JOIN    
  SQL   Server   支持   SQL-92   外联接语法,以及在   WHERE   子句中使用   *=   和   =*   运算符指定外联接的旧式语法。由于   SQL-92   语法不容易产生歧义,而旧式   Transact-SQL   外联接有时会产生歧义,因此建议使用   SQL-92   语法。     
  使用左向外联接  
  假设在   city   列上联接   authors   表和   publishers   表。结果只显示在出版商所在城市居住的作者(本例中为   Abraham   Bennet   和   Cheryl   Carson)。      
  若要在结果中包括所有的作者,而不管出版商是否住在同一个城市,请使用   SQL-92   左向外联接。
(23   row(s)   affected)     
  不管是否与   publishers   表中的   city   列匹配,LEFT   OUTER   JOIN   均会在结果中包含   authors   表的所有行。注意:结果中所列的大多数作者都没有相匹配的数据,因此,这些行的   pub_name   列包含空值。     
  使用右向外联接  
  假设在   city   列上联接   authors   表和   publishers   表。结果只显示在出版商所在城市居住的作者(本例中为   Abraham   Bennet   和   Cheryl   Carson)。SQL-92   右向外联接运算符   RIGHT   OUTER   JOIN   指明:不管第一个表中是否有匹配的数据,结果将包含第二个表中的所有行。      
(18   row(s)   affected)      
  有关谓词的更多信息,请参见   WHERE。       
  使用完整外部联接  
  若要通过在联接结果中包括不匹配的行保留不匹配信息,请使用完整外部联接。M