关于对内外连接的理解,高手进来,我看了整天的书,写几个小时的代码~总结出来的
1、内连接 
 select   * 
 from   a   inner   join   b 
 on   a.id=b.id 
 等价于 
 select   * 
 from   a 
 where   a.id   in(select   id   from   b) 
 union 
 select   * 
 from   b 
 where   b.id   in(select   id   from   a) 
 也等价于 
 select   * 
 from   a,b 
 where   a.id=b.id 
 2、左连接 
 select   * 
 from   a   left   join   b 
 on   a.id=b.id 
 等价于 
 select   * 
 from   a 
 union 
 select   *    
 from   b 
 where   b.id   in   (select   id   from   a)   
 3、右连接 
 select   *    
 from   a   right   join   b 
 on   a.id=b.id 
 等价于 
 select   * 
 from   a 
 where   id   in   (select   id   from   b) 
 union 
 select   * 
 from   b   
 我这样的理解正确吗?
------解决方案--------------------好象有点问题:   
 1、内连接 
 select * 
 from a inner join b 
 on a.id=b.id 
 不等价于 
 select * 
 from a 
 where a.id in(select id from b) 
 union 
 select * 
 from b 
 where b.id in(select id from a) 
 也等价于 
 select * 
 from a,b 
 where a.id=b.id   
 --内连接:就是相当与从a,b的id条件中找出相同的,然后连接起来。你可以从结果集中看出点什么的。   
 2、左连接 
 select * 
 from a left join b 
 on a.id=b.id 
 不等价于 
 select * 
 from a 
 union 
 select *  
 from b 
 where b.id in (select id from a)   
 --这个你理解的,好象是的对的,但是表达却错了。因为左连接的结果集是根据a表做为基础,然后找寻b的id相同的数据,没有的话,就是使用空来表示。 
 还是老话:看查询结果。   
 3、右连接 
 select *  
 from a right join b 
 on a.id=b.id 
 等价于 
 select * 
 from a 
 where id in (select id from b) 
 union 
 select * 
 from b 
 --如上。
------解决方案--------------------select * 
 from a inner join b 
 on a.id=b.id 
 等价于 
 select * 
 from a,b 
 where a.id=b.id 
 除了这个正确以外,其它都不对,但从数据量上(行)来说又都是对 
 join是横联,union 是纵联,显然不一样