数据库中左右连接

学生表   
          学号   姓名   
          0001   小李   
          0002   小王   
          0003   小朱   
          0004   小黄   
  选课表   
          学号   课程   
          0001   高数   
          0002   线数   
          0004   英语   
          0005   电脑   
    
  --左(外)联接   
  SELECT   学生表.*,   选课表.课程   
  FROM   学生表,   选课表   
  WHERE   学生表.学号   =   选课表.学号(+)   
  查询的结果是:   
          学号   姓名   课程   
          0001   小李   高数   
          0002   小王   线数   
          0003   小朱   
          0004   小黄   电脑   
  学生表.学号   =   选课表.学号(+)表示   
  学生表(也就是左边的表)所有行都会被返回   
  即使选课表中没有相应的行与学生表中的行匹配   
    
  --右(外)联接   
  SELECT   学生表.*,   选课表.课程   
  FROM   学生表,   选课表   
  WHERE   学生表.学号(+)   =   选课表.学号   
  查询的结果是:   
          学号   姓名   课程   
          0001   小李   高数   
          0002   小王   线数   
          0004   小黄   电脑   
          0005             电脑   
  学生表.学号(+)   =   选课表.学号表示   
  选课表(也就是右边的表)所有行都会被返回   
  即使学生表中没有相应的行与选课表中的行匹配   
    
    
  不同的数据库系统对外联接有不同的表示   
  有些根本不兼容   
    
  如(还是以上例为基础)   
    
  MS   SQL   SERVER   外联接的SQL写法   
      --左(外)联接   -   第一种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表,   选课表   
      WHERE   学生表.学号   *=   选课表.学号   
      --左(外)联接   -   第二种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表   LEFT   OUTER   JOIN   选课表   ON   学生表.学号   =   选课表.学号   
      --右(外)联接   -   第一种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表,   选课表   
      WHERE   学生表.学号   =*   选课表.学号   
      --右(外)联接   -   第二种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表   RIGHT   OUTER   JOIN   选课表   ON   学生表.学号   =   选课表.学号   
      --注:在MS   SQL   SERVER中,OUTER关健字可以省略   
    
  ACCESS   外联接的SQL写法   
      --左(外)联接   -   第二种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表   LEFT   OUTER   JOIN   选课表   ON   学生表.学号   =   选课表.学号   
      --右(外)联接   -   第二种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表   RIGHT   OUTER   JOIN   选课表   ON   学生表.学号   =   选课表.学号   
      --注:在ACCESS中,关健字OUTER不可以省略   
    
  ORACLE   外联接的SQL写法   
      --左(外)联接   -   第一种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表,   选课表   
      WHERE   学生表.学号   =   选课表.学号(+)   
      --右(外)联接   -   第一种写法   
      SELECT   学生表.*,   选课表.课程   
      FROM   学生表,   选课表   
      WHERE   学生表.学号(+)   =   选课表.学号   
    
  ORACLE直到9i才支持SQL-92外联接语法   
  LEFT   (OUTER)JOIN和RIGHT   (OUTER)   JOIN   
  和MS   SQL   SERVER一样   
  关健字OUTER是可以省略的Top

原文地址:https://www.cnblogs.com/jgzh35/p/3296604.html