• oracle表连接


    ORACLE 8i,9i 表连接方法。

    一般的相等连接:
    select * from a, b where a.id = b.id;
    这个就属于内连接。

    对于外连接:
    Oracle中可以使用“(+) ”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN

    LEFT OUTER JOIN:左外关联
    SELECT e.last_name, e.department_id, d.department_name
    FROM employees e
    LEFT OUTER JOIN departments d
    ON (e.department_id = d.department_id);
    等价于
    SELECT e.last_name, e.department_id, d.department_name
    FROM employees e, departments d
    WHERE e.department_id=d.department_id(+)
    结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。

    RIGHT OUTER JOIN:右外关联
    SELECT e.last_name, e.department_id, d.department_name
    FROM employees e
    RIGHT OUTER JOIN departments d
    ON (e.department_id = d.department_id);
    等价于
    SELECT e.last_name, e.department_id, d.department_name
    FROM employees e, departments d
    WHERE e.department_id(+)=d.department_id
    结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。

    FULL OUTER JOIN:全外关联
    SELECT e.last_name, e.department_id, d.department_name
    FROM employees e
    FULL OUTER JOIN departments d
    ON (e.department_id = d.department_id);
    结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。

    ORACLE8i是不直接支持完全外连接的语法,也就是说不能在左右两个表上同时加上(+),下面是在ORACLE8i可以参考的完全外连接语法
    select t1.id,t2.id from table1 t1,table t2 where t1.id=t2.id(+)
    union
    select t1.id,t2.id from table1 t1,table t2 where t1.id(+)=t2.id

    连接类型 定义 图示 例子
    内连接 只连接匹配的行  select A.c1,B.c2 from A join B on A.c3 = B.c3;
    左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行)以及右边表中全部匹配的行  select A.c1,B.c2 from A left join B on A.c3 = B.c3;
    右外连接 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行)以及左边表中全部匹配的行  select A.c1,B.c2 from A right join B on A.c3 = B.c3;
    全外连接 包含左、右两个表的全部行,不管在另一边的表中是否存在与它们匹配的行  select A.c1,B.c2 from A full join B on A.c3 = B.c3;
    (theta)连接 使用等值以外的条件来匹配左、右两个表中的行  select A.c1,B.c2 from A join B on A.c3 != B.c3;
    交叉连接 生成笛卡尔积——它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行一一匹配   select A.c1,B.c2 from A,B;

  • 相关阅读:
    26 转义符 re模块 方法 random模块 collection模块的Counter方法
    25 正则表达式
    24 from 模块 import 名字
    24 from 模块 import 名字
    24 from 模块 import 名字
    23 析构方法 items系列 hash方法 eq方法
    21 isinstance issubclass 反射 _str_ _new_ _len_ _call_
    20 属性, 类方法, 静态方法. python2与python3的区别.
    python(1)
    python之字符串格式化
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9332083.html
Copyright © 2020-2023  润新知