求解几种JOIN连接的意思

解决方案 »

  1.   

    这种资料很多很多很多吧!百度 谷歌 搜搜 搜索就是了,CSDN上也有很多讲这些的帖子。
      

  2.   

    仅供参考:
    不严格的说:
    CROSS、INNER、OUTER是表之间的水平操作。
    UNION、EXCEPT、INTERSECT是表之间的垂直操作。
    每种基本联接所应用的逻辑阶段都不同。交叉联接CROSS只应用第一个阶段(笛卡尔积),内部联接INNER应用第一、第二个阶段(笛卡尔积,ON筛选器),外部链接OUTER应用所有的阶段(笛卡尔积、ON筛选器、添加外部行)。
    各种联接查询:
    有m条记录的table1表,有n条记录的table2表。外联接中,保留表的记录全部显示,非保留表以NULL扩展。
    1. 交叉连接table1 cross join table2将包含m*n条记录,由两个表中所有可能的记录对组成,因为没有匹配字段或选择条件,所以不能使用on子句和using子句;
    2. 内连接table1 inner join table2将包含r条记录(r<m*n),严格来说,内连接是交叉连接的一个子集,它是通过消除交叉连接中不满足内连接匹配条件的记录而生成的,必须使用on子句。
    3. 左外连接left outer join包含内连接所有记录,以及保留表table1中NULL扩展的每一个未匹配记录;
    4. 右外连接right outer join包含内连接所有记录,以及保留表table2中NULL扩展的每一个未匹配记录;
    5. 全外连接full outer join包含内连接所有记录,以及保留表table1中NULL扩展的每一个未匹配记录,保留表table2中NULL扩展的每一个未匹配记录,通俗的说,它的查询结果等于左外连接加上右外连接;列合并,两张表的数据会全部出来
    6. 合并连接union join包含table1中NULL扩展的每一个未匹配记录,加上table2中NULL扩展的每一个未匹配记录,通俗的说,它的查询结果等于全外连接减去内连接。(合并连接的两个表必须具有相同数量的字段,对应字段的数据类型也必须相同)行集合并