• 数据库中左右连接


    学生表   
              学号   姓名   
              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

  • 相关阅读:
    理解C语言中指针常量和常量指针区别!不要再搞混了~
    哪座城市可以安放程序员的灵魂,一线城市与二三线城市该如何择别?
    Linux 之父如何定义 "Linux" !主要想让黑客、计算机学生使用,学习和享受!
    程序员的凡尔赛文学!作为低调人群的程序员,“凡”起来又是怎样的一番景象呢?
    40个Java集合面试问题和答案
    从关系型数据库到非关系型数据库
    redis安装报错
    redis简介
    不满足依赖关系
    EL表达式中引用隐式变量
  • 原文地址:https://www.cnblogs.com/jgzh35/p/3296604.html
Copyright © 2020-2023  润新知