SQL学习之外部连接

来源:互联网 发布:口腔科最好的医院知乎 编辑:程序博客网 时间:2024/06/05 07:46

inner join(等值连接) 只返回两个表中联结字段相等的行,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。   
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录,对寻找孤儿记录很有用。所谓“孤儿记录”就是那些在主表中没有相关记录的相关表中的记录,孤儿记录是违反引用一致性规则的结果。
on 指定表间联结字段及其关系的等号 "=" 表达式, 返回 true 或 false. 当表达式返回 true 时, 则查询中包含该记录.
!外部连接只能操作已存在于数据库中的数据

MySQL中的外连接示例:


  MySQL>   select   *   from   a1;  
   
  BBB  
  ----------  
  101  
  102  
  103  
  104  
  105   
    
   MySQL>   select   *   from   a2;  
   
  BBB                 CCC  
  ----------   --------------------  
  101  
  102  
  105   
    
   MySQL>   select   *   from   a1 right  join a2   on a1.bbb = a2.bbb;  
   
  BBB                 BBB                 CCC  
  ----------   ----------   --------------------  
  101                 101  
  102                 102  
  105                 105   
    
   MySQL>   select   *   from   a1 left  join a2   on a1.bbb = a2.bbb;    
    
  BBB                 BBB                 CCC  
  ----------   ----------   --------------------  
  101                 101  
  102                 102  
  103  
  104  
  105                 105   
    
   MySQL>

全外连接可以用变相的方法: 2个outer join 来实现
参考:
select * from apples as a
     left outer join oranges as o on a.price = o.price
union
select * from apples as a
     right outer join oranges as o on a.price = o.price