본문 바로가기

데이터베이스/ORACLE

SQL JOIN 의 종류 및 정의

JOIN : 2개 이상의 테이블을 연결하여 데이터를 출력하는 방법. 보통 공통된 값인 PK or FK의 값을 사용한다.

 

JOIN의 종류 : NON EQUI JOIN / EQUI JOIN

 

1. NON EQUI JOIN : 테이블간에 일치하는 칼럼값이 존재하지 않을 경우 사용. '=' 연산자 이외의 연산자 사용

 

ex) SELECT A.COLUMN1, B.COLUMN2

        FROM TABLE1 A, TABLE2 B

     WHERE A.CUSNO IN B.REFNO

 

2. EQUI JOIN : 그외 테이블간에 일치하는 칼럼값이 존재하는 경우 사용. '=' 연산자 사용

 

ex1)  단순 JOIN

        SELECT A.COLUMN1, B.COLUMN2       

          FROM TABLE1 A, TABLE2 B                                                    

        WHERE A.CUSNO = B.CUSNO

 

==>  INNER JOIN 형태

          SELECT A.COLUMN1, B.COLUMN2

            FROM TABLE1 A

(INNER) JOIN TABLE2 B

                ON A.CUSNO = B.CUSNO

 

*단순 JOIN ( A*B 출력 )

SELECT * FROM TABLE1 A, TABLE2 B

SELECT * FROM TABLE1 A JOIN TABLE2 B

SELECT * FROM TABLE1 A CROSS JOIN TABLE2 B

 

ex2) NATURAL JOIN : 두 테이블의 동일한 이름을 가지는 칼럼이 모두 조인됨

 

             SELECT A.COLUMN1, B.COLUMN2

               FROM TABLE1 A

NATURAL JOIN TABLE2 B

 

==>JOIN ~USING문을 활용하여 칼럼 선택하여 조인하는 방법

            SELECT A.COLUMN1, B.COLUMN2

              FROM TABLE1 A

               JOIN TABLE2 B

            USING  (CUSNO)

 

ex3) OUTER JOIN : JOIN 조건에서 한쪽에 값이 없더라도 행을 반환하는 JOIN방식

 

1) LEFT OUTER JOIN : 왼쪽에 표기된 테이블을 기준으로 OUTER JOIN 수행

 

                  SELECT A.COLUMN1, B.COLUMN2

                    FROM TABLE1 A

 LEFT OUTER JOIN TABLE2 B

                         ON A.CUSNO = B.CUSNO

 

                  SELECT A.COLUMN1, B.COLUMN2      

                    FROM TABLE1 A, TABLE2 B                                                    

                  WHERE A.CUSNO = B.CUSNO(+)

 

2) RIGHT OUTER JOIN : 오른쪽에 표기된 테이블을 기준으로 OUTER JOIN 수행

           

                    SELECT A.COLUMN1, B.COLUMN2

                      FROM TABLE1 A

 RIGHT OUTER JOIN TABLE2 B

                           ON A.CUSNO = B.CUSNO

 

                    SELECT A.COLUMN1, B.COLUMN2      

                      FROM TABLE1 A, TABLE2 B                                                    

                    WHERE A.CUSNO(+) = B.CUSNO

 

3) FULL OUTER JOIN : (LEFT OUTER JOIN 결과) U (RIGHT OUTER JOIN 결과)

            

                    SELECT A.COLUMN1, B.COLUMN2

                      FROM TABLE1 A

  FULL OUTER JOIN TABLE2 B

                           ON A.CUSNO = B.CUSNO