zoukankan      html  css  js  c++  java
  • 数据库 连接(JOIN) LZU

    连接也称为θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

    连接运算中有两种最为重要的连接,一种是等值连接(Equijoin),另一种是自然连接(Nature Join)等值连接是从关系R和S中的笛卡尔积中选取A,B属性值相等的那些元组;自然连接它要求两个关系中进行比较的分量必须是相同的属性组,并且把结果中重复的属性列去掉。

    Example:  

    create table R (
       A varchar2(10),
       B varchar2(10),
       C varchar2(10)
    );
    
    insert into R(A,B,C) values ('a1','b1','5');
    insert into R(A,B,C) values ('a1','b2','6');
    insert into R(A,B,C) values ('a2','b3','8');
    insert into R(A,B,C) values ('a2','b4','12');
    
    create table S(
         B varchar2(10),
         D varchar2(10)
    );
    
    insert into S(B,D) values ('b1','3');
    insert into S(B,D) values ('b2','7');
    insert into S(B,D) values ('b3','10');
    insert into S(B,D) values ('b3','2');
    insert into S(B,D) values ('b5','2');
    commit;  
    

     

    R

    A

    B

    C

    a1

    b1

    5

    a1

    b2

    6

    a2

    b3

    8

    a2

    b4

    12

    S

    B

    D

    b1

    3

    b2

    7

    b3

    10

    b3

    2

    b5

    2

    关系R和关系S分别如上图所示。

    1、一般连接(C<D)

    R-S(C<E)

    A

    R.B

    C

    S.B

    D

    a1

    b1

    5

    b1

    3

    a1

    b1

    5

    b2

    10

    a1

    b2

    6

    b2

    7

    a1

    b2

    6

    b3

    10

    a2

    b3

    8

    b3

    10

    2、等值连接select * from (select * from R) R join (select * from S) S on R.B=S.B)

    A

    R.B

    C

    S.B

    D

    a1

    b1

    5

    b1

    3

    a1

    b2

    6

    b2

    7

    a2

    b3

    8

    b3

    10

    a2

    b3

    8

    b3

    2

    3、自然连接select A,S.B(R.B)as B,C,D from (select * from R) R join (select * from S) S on R.B=S.B)

    A

    B

    C

    D

    a1

    b1

    5

    3

    a1

    b2

    6

    7

    a2

    b3

    8

    10

    a2

    b3

    8

    2

    4、外连接(Outer JOIN)

    A

    B

    C

    D

    a1

    b1

    5

    3

    a1

    b2

    6

    7

    a2

    b3

    8

    10

    a2

    b3

    8

    2

    a2

    b4

    12

    NULL

    NULL

    b5

    NULL

    2

    4.1 左外连接(Left Join:select A,S.B(R.B) as B,C,D from (select * from R) R Left join (select * from S) S on R.B=S.B)

    只保留左边关系R中要舍弃的元组。

    A

    B

    C

    D

    a1

    b1

    5

    3

    a1

    b2

    6

    7

    a2

    b3

    8

    10

    a2

    b3

    8

    2

    a2

    b4

    12

    NULL

    4.2 右外连接(Right Join:select A,S.B(R.B) as B,C,D from (select * from R) R right join (select * from S) S on R.B=S.B)

    只保留右边关系S中要舍弃的元组。

    A

    B

    C

    D

    a1

    b1

    5

    3

    a1

    b2

    6

    7

    a2

    b3

    8

    10

    a2

    b3

    8

    2

    NULL

    b5

    NULL

    2

     


  • 相关阅读:
    Mysql常用语句
    Java基础知识总结
    ExtJS4.2学习(三)——入门基础
    ExtJS4.2学习(二)——入门基础
    ExtJS 4.2学习(一)——环境搭建
    大三下半学期“饭店餐饮系统”项目笔记
    GUI练习——列出指定目录内容
    Collections之sort的两个方法(自然排序和自定义比较器排序)
    Java集合总结
    访问数据库
  • 原文地址:https://www.cnblogs.com/lzugis/p/6539935.html
Copyright © 2011-2022 走看看