본문 바로가기

별걸다하는 IT/데이터베이스 Database

[데이터베이스 SQL]UNION, UNION ALL 쿼리 결과 더하기, 행 합치기

반응형

[데이터베이스 SQL 완전정복 목차]

안녕하세요~

오늘은 실무에서 엄청엄청 많이쓰이는 UNION ALL을 다뤄보려고 해요.

 

UNION, UNION ALL 명령어는 무슨 역할

둘다 쿼리 결과를 더해주는 명령어입니다.

쉽게 설명하면 이게 다예요! ㅎㅎ

토마토와 바나나 결과 테이블인 A와 딸기 메론를 데이터를 가지고 있는 B테이블을 UNION ALL 해주면 하나로 합쳐집니다.

행은 아래로 늘어나는거니까 상관 없지만,, 서로 다른 개수의 컬럼을 가진 테이블은 당연히 합칠수가 없어요. 

컬럼 개수가 같아야 한다!

 

UNION과 UNION ALL차이

UNION은 중복되는 행이 있을 경우에 중복을 제거하고 하나만 더합니다.

UNION ALL은 중복이 있던 말던 관계없이 모두 다 더합니다.

 

UNION, UNION ALL 문법

연결하고 싶은 결과를 다 UNION 또는 UNION ALL로 이어주면 끝입니다.

요렇게 하면, 파란색 결과와 초록색 결과, 노란색 결과가 모두 합쳐져서 조회될거예요.

 

EMPLOYEE 테이블에서 매니저ID가 100인 행과, 매니저ID가 120인 행들을 UNION ALL로 합쳐봤어요.

1번부터 14번까지가 첫 번째 SELECT행의 결과고,

그 이후 22까지가 두 번째 SELECT행의 결과인 것을 잘 확인해볼 수 있습니다.

 

UNION ALL 활용예시

UNION ALL은 디비서버 상관없이 전체 건수를 확인하고 싶을 때에도 많이 쓰이는데요.

A 서버계정에 상품정보 테이블이 있고,

B 서버계정에도 상품정보 테이블이 있는데,

이 두 테이블이 동기화가 되지 않으면, A서버의 상품정보 테이블과 B정보의 상품정보 테이블은 다르겠죠

 

--A서버에서
SELECT * FROM PRODUCT
UNION ALL
SELECT * FROM PRODUCT@B_LINK

B서버 링크를 걸어줌으로써, A서버의 PRODUCT와 B서버의 PRODUCT를 한 번에 모두 조회할 수 있는겁니다~!

 

UNION, UNION ALL과 DUAL

UNION (ALL)은 빠르고 간단하게 가상 테이블 만들때도 잘 활용되는데요.

테이블을 CREATE로 만들자니, 그렇게 공들여서(?) 본격적으로 할만한건 아니고..

뭔가 테스트 위해서 가상 테이블을 만들때 DUAL(더미테이블)과 UNION ALL을 이용해서 만들 수 있어요.

이 사진처럼, UNION ALL 결과를 직접 보여주고자

토마토랑 바나나 테이블 A와 딸기 메론 테이블 B를 만들고 싶은데 이걸 CREATE TABLE로 만들면 너무 번거롭잖아요?

요렇게 DUAL과 UNION ALL의 합작품으로 테이블 A를 금방 만들 수 있습니다. 

 

오늘은 간단하게 덧셈 기능을 하는 UNION과 UNION ALL에 대해서 살펴봤어요.

공감은 큰 힘이 됩니다. 다음 포스팅에서 봐요!

반응형