빅데이터/Oracle SQL | Do it! 오라클로 배우는 데이터베이스 입문

조인 | SQL-99 조인 (NATURAL JOIN / JOIN ~ USING / JOIN ~ ON / OUTER JOIN)

KimKelly 2023. 2. 27. 19:44
반응형

08. 여러 테이블을 하나의 테이블처럼 사용하는 조인

08-3. SQL-99 표준 문법으로 배우는 조인

SQL-99 조인은 앞에서 배운 조인 방식과 기능은 같지만 문법이 다소 다르며, 다른 DBMS 제품에서도 사용 가능.

FROM절에 조인 조건식을 명시하고, WHERE절에 출력 행을 선정하는 조건식을 명시하므로, 서로 구별하기 쉬운 게 장점.

  • NATURAL JOIN
  • JOIN ~ USING
  • JOIN ~ ON
  • OUTER JOIN

 

[NATURAL JOIN]

등가 조인(inner join)과 같은 방식. (조인 대상이 되는 두 테이블에서 이름과 자료형이 같은 열을 찾은 후, 그 열을 기준으로 등가 조인.)

(일부 데이터만 표시함)

*EMP, DEPT 테이블의 공통 열인 DEPTNO 열을 기준으로 등가 조인되며, 기존 등가 조인과 다르게 DEPTNO 앞에 테이블 이름을 명시하지 않음.

*조인 조건이 WHERE절에 있는 기존 조인 방식과 달리 FROM절에 조인 키워드를 사용하는 형태. 따로 지정하지 않아도 자동으로 조인 기준 열이 지정됨.

 

 

[JOIN ~ USING]

등가 조인(inner join)과 같은 방식. 

자동으로 조인 기준 열이 지정되는 NATURAL JOIN과 달리 USING 키워드에 조인 기준으로 사용할 열을 명시하며,

이 때, 기준 열 앞에 테이블 이름은 명시하지 않음.

FROM TABLE1 JOIN TABLE2 USING (조인에 사용한 기준열)

 

 

[JOIN ~ ON] 

가장 범용성있으며 실무에서 주로 사용하는 방식.

기존 WHERE절에 있는 조인 조건식을 ON 키워드 옆에 작성함.

(일부 데이터만 표시함)

 

[OUTER JOIN]

왼쪽 외부 조인
(Left Outer Join)
기존 WHERE TABLE1.COL1 = TABLE2.COL1(+)
SQL_99 FROM TABLE1 LEFT OUTER JOIN TABLE2 ON (조인 조건식)
오른쪽 외부 조인
(Right Outer Join)
기존 WHERE TABLE1.COL1(+) = TABLE2.COL1
SQL_99 FROM TABLE1 RIGHT OUTER JOIN TABLE2 ON (조인 조건식)
전체 외부 조인
(Full Outer Join)
기존 없음 (UNION 집합 연산자 활용)
SQL_99 FROM TABLE1 FULL OUTER JOIN TABLE2 ON (조인 조건식)

 

- EMP 테이블의 사원 정보와 해당 사원의 직속 상관의 사원 번호를 나란히 함께 출력하기

1) 왼쪽 외부 조인(Left Outer Join) 사용

(일부 데이터만 표시함)

*왼쪽 열 모두 출력. 즉, 상급자가 존재하지 않는 사원까지 모두 출력.

 

2) 오른쪽 외부 조인(Right Outer Join) 사용

(일부 데이터만 표시함)

*오른쪽 열 모두 출력. 즉, 부하직원이 없는 가장 직책이 낮은 사원까지 모두 출력.

 

3) 전체 외부 조인(Full Outer Join) 사용

(일부 데이터만 표시함)

 

 

[SQL-99 조인으로 3개 이상의 테이블을 조인할 때]

FROM TABLE1 JOIN TABLE2 ON (조건식)
            JOIN TABLE3 ON (조건식)

*참고: 기존 조인 방식에서 3개 이상의 테이블을 조인할 때

 SELECT ~ FROM TABLE1, TABLE2, TABLE3
         WHERE TABLE1.COL = TABLE2.COL
           AND TABLE2.COL = TABLE3.COL
반응형