개발/DB

[오라클]oracle 여러 테이블 컬럼 select (union all)

Mr.mandu. 2018. 2. 14. 10:57

안녕하세요.

오늘은 오라클의 union all에 대해 포스팅하려고 합니다.


union all은?

다수의 테이블의 컬럼을 한번에 출력하기 위합니다.(쿼리의 결합)

두 집합을 결합한 합집합 형태의 결과를 반환 합니다.


union all과 union이 있습니다.


union all 과 union 의 차이는?

UNION         : 두 테이블의 결과를 중복제거하여 출력합니다.

UNION ALL    : 두 테이블의 결과를 중복허용하여 출력합니다.



먼저 실습하기에 앞서 테이블을 살펴보겠습니다.

dept 테이블의 데이터 입니다.





dept2의 테이블 데이터 입니다.




이제 두테이블의 데이터를 합쳐서 select 해 보겠습니다.


SELECT 

 dname, pdept, LOC

FROM

(

SELECT 

 dname, '' AS pdept, loc

FROM DEPT


UNION all


SELECT 

dname, pdept, area AS loc

FROM DEPT2


);



구조를 살펴보면

dept 테이블에서 dname, pdept, loc 컬럼을 select 하였습니다.

pdept컬럼은 없지만 dept2와 컬럼을 맞춰주기위하여 적어주었습니다.


dept2 테이블에서 동일하게 dname, pdept, area 컬럼을 select 해주었습니다.

여기에서 area 컬럼을 as를 이용하여 loc로 변환해주었습니다.

안해주어도 첫번째 테이블 컬럼 명칭을 따라가지만 확실하게 해주어 컬럼명을 동일하게 맞춰주는것이 좋습니다.


union, union all을 할때에는 

select 하는 컬럼의 데이터 타입, 순서를 동일하게 해주어야 한다는것을 잊으시면 안됩니다.


그리고 저는 통인된 모습을 위해 한번더 select 문으로 묶어 주었습니다.

색칠된 부분을 없애도 쿼리는 실행됩니다.


select 결과입니다.

dept 테이블의 데이터와, dept2 테이블의 데이터가 한번에 나온 결과를 확인 할 수 있습니다.



좋은하루되세요.

감사합니다.