오라클(Oracle) 테이블 조인(TABLE JOIN) EQUJOIN, OUTER JOIN, SELF JOIN 방법

오라클(Oracle) 테이블 조인(TABLE JOIN) EQUJOIN, OUTER JOIN, SELF JOIN 방법

이번 오라클 강좌는 테이블 조인입니다. 두개 이상의 테이블을 조인해서 원하는 데이터를 추출하는 방법입니다.
테이블간에는 조건이 맞는 데이터가 있어야 릴레이션을 맺을 수 있습니다.
서로 다른 테이블에 다른 정보가 있서 서로 관계를 맺고 데이터를 추출하는 건데요.
예제를 통해서 보시면 바로 이해할 수 있습니다.

테이블 생성을 해보겠습니다.
두개의 테이블을 만들고 하나의 테이블엔 사용자 정보를 두번째 테이블은 부서 정보가 있는 테이블을 생성할겁니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE USER_INFO (
 IDX          INT PRIMARY KEY
,USER_ID      VARCHAR2(50)
,USER_NMAE    VARCHAR2(50)
,SUBJECT_CODE VARCHAR2(10)
);
 
--부서정보
DROP TABLE SUBJECT_INFO;
CREATE TABLE SUBJECT_INFO(
 SUB_IDX       INT PRIMARY KEY
,SUBJECT_CODE  VARCHAR2(10)
,SUBJECT_NAME VARCHAR2(50NOT NULL
);
 
cs


오라클(Oracle) 테이블 조인(TABLE JOIN) EQUJOIN, OUTER JOIN, SELF JOIN 방법


 


데이터를 등록합니다. 사용자 정보가 있는 테이블 데이터 중 마지막에는 부서 정보값이 없습니다.

부서정보 쿼리


 

 

부서 정보에 데이터를 등록합니다.

데이터 등록


 

 

1. EQUJOIN JOIN
A B 테이블에 컬럼조건이 모두 조건을 만족하는 동일한 값이 있을 때 데이터가 조회 됩니다.

1
2
3
4
5
6
SELECT A.USER_ID
          ,A.USER_NMAE
          ,B.SUBJECT_NAME
  FROM USER_INFO A
          ,SUBJECT_INFO B
 WHERE A.SUBJECT_CODE = B.SUBJECT_CODE
cs

 

쿼리를 실행하면 5개의 ROW가 조회되는 것을 확인할 수 있습니다.

A테이블에는 데이터 ROW6개 들어있는데 5개만 조회가 되는것은
WHERE 절에 테이블 조인 시 A.SUBJECT_CODE = B.SUBJECT_CODE
로 조인을 하는데 A 테이블에 박대기 데이터는 값이 없기 때문에 조건에서 빠진겁니다.

EQUJOIN JOIN


 

 

조건절에 추가로 다른 컬럼을 조건에 넣을 수 있는데요.
2개 이상의 조건을 JOIN 조건으로 할 수 있습니다.


1
2
3
4
5
6
7
8
SELECT A.USER_ID
          ,A.USER_NMAE
          ,B.SUBJECT_NAME
  FROM USER_INFO A
           ,SUBJECT_INFO B
 WHERE A.SUBJECT_CODE = B.SUBJECT_CODE
    AND A.XXXXXX           = B.XXXXXX
 
cs



2. OUTER JOIN

OUTER JOIN은 데이터 조건이 맞지 않더라도 데이터를 우선 보여주는 OR 조건의 조인방식입니다.
사용 방식은 OUTER JOIN 조건에 (+)를 붙이는 겁니다.
(+)조건을 붙이는 조건은 데이터가 없는 테이블 컬럼에 붙이는 겁니다.

사용자 정보인 A 테이블에 NULL인 부서 정보가 없으므로 B.테이블 컬럼에 (+)를 넣으면 됩니다.


1
2
3
4
5
6
7
8
SELECT A.USER_ID
          ,A.USER_NMAE
          ,B.SUBJECT_NAME
  FROM USER_INFO A
           ,SUBJECT_INFO B
 WHERE A.SUBJECT_CODE = B.SUBJECT_CODE (+
 ;
 
cs


 

 

 쿼리를 실행하면 6개의 ROW가 모두 조회 됩니다.
 B 테이블에 NULL 인 부서가 없으므로 빈값이 표시 됩니다.

OUTER JOIN

 


 

 

반대로 (+) 값을 표시하게 되면 모든 부서는 조회가 되고
사용자 정보에 빈값이 들어가게 됩니다.

반대로아우터 조인


 

 

3. SELF JOIN
테이블을 조인할 때 2개 이상의 테이블을 조인한다고 말씀드렸는데
자기 테이블을 다시 조회해야 하는경우가 있습니다.
같은데이터가 있지만 서로 조건이 다르게 조회되어야 하는경우 SELF 조인을 해서
2개 테이블과 같이 조인해서 사용합니다.


SELF JOIN

쿼리를 실행하면 예상대로 5개의 데이터가 조회 됩니다.

1
2
3
4
5
6
7
8
SELECT  A.IDX
           ,A.USER_ID
           ,A.USER_NMAE
  FROM USER_INFO A
          ,USER_INFO B
  WHERE A.IDX                 = B.IDX
     AND A.SUBJECT_CODE  = B.SUBJECT_CODE
  ;
cs


이상 오라클(Oracle) 테이블 조인(TABLE JOIN) EQUJOIN, OUTER JOIN, SELF JOIN 방법을 알아보았습니다.