`
垂直的微笑
  • 浏览: 45288 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

收藏 ORACLE左右链接说明

阅读更多
学生表
        学号   姓名
        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是可以省略的
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics