oracle 连接

前提准备:


表的创建:

CREATE TABLE A_TEST
(
    A_ID                           VARCHAR2(100) NOT NULL,
    A_C1                           VARCHAR2(100),
    A_C2                           VARCHAR2(100),
    A_C3                           VARCHAR2(100),
    A_C4                           VARCHAR2(100)
)
数据:
1	AC1_1	AC2_1	AC3_1	AC4_1
2	AC1_2	AC2_2	AC3_2	AC4_2
3	AC1_3	AC2_3	AC3_3	AC4_3
4	AC1_4	AC2_4	AC3_4	AC4_4
5	AC1_5	AC2_5	AC3_5	AC4_5
6	AC1_6	AC2_6	AC3_6	AC4_6
7	AC1_7	AC2_7	AC3_7	AC4_7
11	AC1_11	AC2_11	AC3_11	AC4_11


CREATE TABLE B_TEST
(
    B_ID                           VARCHAR2(100) NOT NULL,
    B_C1                           VARCHAR2(100),
    B_C2                           VARCHAR2(100),
    B_C3                           VARCHAR2(100),
    B_C4                           VARCHAR2(100),
    B_C5                           VARCHAR2(100),
    B_C6                           VARCHAR2(100)
)
数据:
1	BC1_1	BC2_1	BC3_1	BC4_1	BC5_1	BC6_1
2	BC1_2	BC2_2	BC3_2	BC4_2	BC5_2	BC6_2
3	BC1_3	BC2_3	BC3_3	BC4_3	BC5_3	BC6_3
4	BC1_4	BC2_4	BC3_4	BC4_4	BC5_4	BC6_4
5	BC1_5	BC2_5	BC3_5	BC4_5	BC5_5	BC6_5
6	BC1_6	BC2_6	BC3_6	BC4_6	BC5_6	BC6_6
7	BC1_7	BC2_7	BC3_7	BC4_7	BC5_7	BC6_7
8	BC1_8	BC2_8	BC3_8	BC4_8	BC5_8	BC6_8
9	BC1_9	BC2_9	BC3_9	BC4_9	BC5_9	BC6_9
10	BC1_10	BC2_10	BC3_10	BC4_10	BC5_10	BC6_10




内连接

SELECT A.A_C1
      ,B.B_C1
  FROM A_TEST A
      ,B_TEST B
 WHERE A.A_ID = B.B_ID

检索结果:
AC1_1	BC1_1
AC1_2	BC1_2
AC1_3	BC1_3
AC1_4	BC1_4
AC1_5	BC1_5
AC1_6	BC1_6
AC1_7	BC1_7



左连接(left outer join 或者 left join)
左外连接就是在等值连接的基础上加上主表中的未匹配数据,A left join B  A就是主表


SELECT A.A_C1
      ,B.B_C1
  FROM A_TEST A LEFT JOIN B_TEST B
 ON A.A_ID = B.B_ID

检索结果:
AC1_1	BC1_1
AC1_2	BC1_2
AC1_3	BC1_3
AC1_4	BC1_4
AC1_5	BC1_5
AC1_6	BC1_6
AC1_7	BC1_7
AC1_11	(NULL)



右连接 (right outer join 或者 right join)
右外连接是在等值连接的基础上加上被连接表的不匹配数据  A RIGHT JOIN B B是主表
SELECT A.A_C1
      ,B.B_C1
  FROM A_TEST A RIGHT JOIN B_TEST B
 ON A.A_ID = B.B_ID

检索结果:
AC1_3	BC1_3
AC1_1	BC1_1
AC1_2	BC1_2
AC1_4	BC1_4
AC1_5	BC1_5
AC1_6	BC1_6
AC1_7	BC1_7
(NULL)	BC1_10
(NULL)	BC1_9
(NULL)	BC1_8




※: left join   左边是主表  right join 右边的是主表


全连接(full outer join 或者 full join)
全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上

SELECT A.A_C1
      ,B.B_C1,B.B_C2
  FROM A_TEST A FULL JOIN B_TEST B
 ON A.A_ID = B.B_ID

检索结果:
AC1_1	BC1_1	BC2_1
AC1_2	BC1_2	BC2_2
AC1_3	BC1_3	BC2_3
AC1_4	BC1_4	BC2_4
AC1_5	BC1_5	BC2_5
AC1_6	BC1_6	BC2_6
AC1_7	BC1_7	BC2_7
(NULL)	BC1_8	BC2_8
(NULL)	BC1_9	BC2_9
(NULL)	BC1_10	BC2_10
AC1_11	(NULL)	(NULL)



猜你喜欢

转载自flyfx.iteye.com/blog/2160404