Back-End/SQL

[Oracel / SQL] JOIN 예시와 함께 톺아보기 (Inner, Outer, Left, Right, Natural JOIN)

koh1018 2022. 3. 3. 19:20
반응형

1. INNER JOIN (내부 조인, 동등 조인)

SELECT {컬럼 명}
FROM {테이블 A} (INNER) JOIN {테이블 B}
ON A.{공통 속성} = B.{공통 속성};

INNER는 생략해도 된다.

가장 일반적인 JOIN(교집합)이며 조건이 일치하는 값이 두 테이블에 모두 존재할 때 출력한다.

아래와 같이 카티션 곱을 활용해 작성해도 된다.

SELECT {컬럼 명}
FROM {테이블 A}, {테이블 B}
WHERE A.{공통 속성} = B.{공통 속성};

하지만 카티션 곱을 이용하면 메모리 사용량이 커지므로 JOIN을 사용하는 것이 좋다.

 

 

 

2. OUTER JOIN (외부 조인)

LEFT OUTER JOIN

 

- A 테이블과 중복되는 B 값과 B 와 중복되지 않은 A 의 모든 값을 출력

 

RIGHT OUTER JOIN

- B 테이블과 중복되는 A 값과 A 와 중복되지 않는 B 의 모든 값을 출력

 

FULL OUTER JOIN

- A 테이블과 B 테이블의 모든 값을 출력

 

SELECT {컬럼 명}
FROM {테이블 A} LEFT/RIGHT/FULL (OUTER) JOIN {테이블 B}
ON A.{공통 컬럼} = B.{공통 컬럼};

마찬가지로 OUTER는 생략 가능하다.

ON은 WHERE과 같은 문법으로 작성해주면 된다.

SELF JOIN의 경우 테이블에 별칭을 줘야하는데 as를 사용하지 않고 띄어쓰기를 사용한다.

 

 

 

3. NATURAL JOIN (자연 조인)

SELECT {컬럼 명}
FROM {테이블 명} NATURAL JOIN {테이블 명}
# WHERE {조건식}

두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 같은 값을 가지는 행만을 고려하여 출력한다.

중복 값은 제거한다.

 

 

 


 

 

 

예시

아래 두 테이블의 LEFT OUTER JOIN과 NATURAL JOIN에 대한 예시를 남기며 마무리 하겠다.

반응형