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

조인 | 조인의 종류 (등가 조인 / 비등가 조인 / 자체 조인 / 외부 조인)

KimKelly 2023. 2. 26. 23:33
반응형

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

08-2. 조인 종류

두 개 이상의 테이블을 하나의 테이블처럼 가로로 늘어뜨려 출력하기 위해 사옹하는 조인은 대상 데이터를 어떻게 연결하느냐에 따라 아래와 같이 구분함.

  • 등가 조인
  • 비등가 조인
  • 자체 조인
  • 외부 조인

 

[등가 조인]

- 테이블을 연결한 후, 출력 행을 각 테이블의 특정 열에 일치한 데이터를 기준으로 선정하는 방식.

- 내부 조인(inner join), 단순 조인(simple join)으로 부르기도 함.

- 일반적으로 가장 많이 사용되는 조인 방식.

 

여러 테이블의 열 이름이 같을 때 유의점

조인 조건이 되는 각 테이블의 열 이름이 같을 경우, 해당 열 이름을 테이블 구분 없이 명시하면 오류 발생.

따라서 아래와 같이 어느 테이블의 열인지 명시 필요.(실무에서는 겹치지 않는 열 이름이라도 대부분 모두 명시함)

(일부 데이터만 표시함)

 

WHERE절에 조건식 추가하여 출력 범위 설정하기

 

조인 테이블 개수와 조건식 개수의 관계

조건은 반드시 최소 (테이블 개수-1)개 만큼 필요함.

(예를 들어, 테이블이 A, B, C라면 A와 B를 연결해 줄 열 하나, A와 B가 연결된 상태에서 C를 연결해 줄 열 하나가 추가로 더 필요.)

 

 

[비등가 조인]

등가 조인 방식 외의 방식.

 

- 사원 정보와 급여 등급 정보를 함께 출력할 때

(일부 데이터만 표시함)

SALGRADE 테이블은 각 급여 등급의 기준이 되는 최소 금액 및 최대 금액을 저장하고 있기 때문에,

열의 일치 여부를 기준으로 테이블을 조인하는 등가 조인 방식이 아닌 비등가 조인 방식을 사용함.

(일부 데이터만 표시함)

*BETWEEN은 같다(=)를 포함.

 


[자체 조인]

하나의 테이블을 여러 개의 테이블처럼 활용하여 조인하는 방식.

 

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

* EMP 테이블은 14개의 행이 존재하나, 위 결과의 행 수는 13개임.

KING 데이터의 MGR 열 값이 NULL임에 따라(최고 직급으로 상급자가 없음), EMP 테이블의 MGR 열과 일치한 EMPNO를 가진 행이 존재하지 않아 최종 출력에서 제외됐기 때문.

 

 

[외부 조인(outer join)]

외부 조인은 아우터 조인이라고 더 많이 부르며, 면접 질문으로 자주 나오기 때문에 개념과 사용법 꼭 숙지하기

 

외부 조인(outer join)을 사용하는 이유

위의 자체 조인 결과값을 보면 조인 조건 데이터 중 어느 한쪽이 NULL이면 최종 출력에서 제외되는데, 이를 포함시켜 결과를 출력하고 싶을 때 사용.

 

외부 조인(outer join)의 종류

왼쪽 외부 조인(Left Outer Join) 왼쪽 열 모두 출력 WHERE TABLE1.COL1 = TABLE2.COL1(+)
오른쪽 외부 조인(Right Outer Join) 오른쪽 열 모두 출력 WHERE TABLE1.COL1(+) = TABLE2.COL1

*왼쪽 외부 조인(Left Outer Join): 왼쪽 열을 기준으로 오른쪽 열의 데이터 존재 여부에 상관없이 출력

오른쪽 외부 조인(Right Outer Join): 오른쪽 열을 기준으로 왼쪽 열의 데이터 존재 여부에 상관없이 출력

*조인 이름과 (+) 기호 위치가 반대임.

 

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

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

(일부 데이터만 표시함)

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

 

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

(일부 데이터만 표시함)

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

반응형