给个通俗的解释吧.
    
     例表a
    
     aid adate
    
     1 a1
    
     2 a2
    
     3 a3
    
     表b
    
     bid bdate
    
     1 b1
    
     2 b2
    
     4 b4
    
     两个表a,b相连接,要取出id相同的字段
    
     select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
    
     此时的取出的是:
    
     1 a1 b1
    
     2 a2 b2
    
     那么left join 指:
    
     select * from a left join b on a.aid = b.bid
    
     首先取出a表中所有数据,然后再加上与a,b匹配的的数据
    
     此时的取出的是:
    
     1 a1 b1
    
     2 a2 b2
    
     3 a3 空字符
    
     同样的也有right join
    
     指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
    
     此时的取出的是:
    
     1 a1 b1
    
     2 a2 b2
    
     4 空字符 b4
  
    
      
        “Outer Join
        
         这款的 Join 方式是一般人比较少用到的, 甚至有些 SQL 的管理者也从未用过, 这真是一件悲哀的代表, 因为善用 Outer Join 是可以简化一些查询工作的, 先来看看 Outer Join 的语法
        
         Select <要查询的字段> From
        
         [Outer] Join On
        
         语法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本质上, Outer Join 是 inclusive, 叫它做包容性吧! 不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查询结果会包含所有 Left 资料表的资料, 颠倒过来讲, Right Outer Join 的查询就会包含所有 Right 资料表的资料。”
      
    
  
    
      
        
          FULL JOIN 或 FULL OUTER JOIN。
          
           完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值
        
      
    
  
     
    
union:union默认就是去除重复的,而union ALL 是全部显示
    
      select A,L = count(*) from 表 where A = 1 group by A
      
       union
      
       select B,L = count(*) from 表 where B = 2 group by B
      
       union
      
       select B,L = count(*) from 表 where C = 3 group by C
    
  

