JAVA 웹 개발자 실전 면접문제

(DB문제) UNION ALL과 OUTER JOIN의 차이는?

mt프로젝트 2017. 8. 23. 00:13

UNION ALL과 OUTER JOIN을 비교하면, UNION ALL은 행의 합집합, OUTER JOIN은 열의 합집합 이라고 볼 수 있다.

OUTER JOIN은 흔히 사용하듯, 어떤 키가 되는 값으로 join 해서 서로다른 테이블을 연결하고 컬럼을 확장하는 것이다. 예를들어보자.


1. OUTER JOIN

TB_STUEDENT

-------------------

id | name | age

-------------------

kim | 김씨 | 20

------------------


TB_GRADE

-------------------

id | class | grade

-------------------

kim | 수학 | A

-------------------

위와같이 TB_STUEDENT, TB_GRADE 두 개의 테이블이 있다고 할때, id 컬럼으로 이 테이블을 join 하면 아래와 같은 결과를 얻을 수 있다.

---------------------------------

id | name | age | class | grade

---------------------------------

kim | 김씨 | 20 | 수학 | A

---------------------------------

즉 서로 다른 테이블들의 colume들을 모아서 볼 수 있다.

이번엔 UNION ALL을 보자.


2. UNION ALL

TB_STUEDENT

-------------------

id | name | age 

-------------------

kim | 김씨 | 20

------------------


TB_TEACHER

-------------------

id | name | age

-------------------

LEE | 이씨 | 40

------------------

위의 TB_STUEDENT 테이블과 TB_TEACHER 테이블을 UNION ALL 하면 결과는 아래와 같다.

-------------------

id | name | age

-------------------

kim | 김씨 | 20

LEE | 이씨 | 40

------------------

즉 서로 다른 테이블들의 row를 하나로 합쳐서 보여준다.


추가로, JOIN에서 INNER JOIN, OUTER JOIN이 있듯, UNION ALL 외에도 UNION이 있다.

UNION ALL과 UNION의 차이는, UNION ALL은 두 테이블의 ROW들을 단순히 합쳐서 보여주는것인 반면에, UNION을 사용하면 ROW들 중 값이 중복되는 ROW들은 제거하고 보여준다는 점에서 다르다.