공통점 : 데이터 출력 형태는 다르나, union을 수행 한 집합을 group by 하면 조인과 같은 결과를 얻을 수 있다.
데이터 연결 유형에 따른 출력 형태로 본 특징
join : 가로로 집합이 붙음. 특히 M:M조인의 경우 로우 수를 증가 시킴
조인은 공통키값(연결고리)을 중심으로 데이터를 연결
조인은 {*}키와 데이터를 분리{*}해서 데이터를 연결
union all : 각 집합의 로우를 그대로 모아둠. 세로로 집합이 붙음
union & group by는 구조를 중심으로 데이터를 모아서 연결
union & group by는 {*}키와 데이터를 같이 읽어{*}와서 데이터를 연결
union으로 데이터를 연결할 경우 데이터를 아래로 붙이므로 공통키값으로 연결하는 추가적인 작업이 발생하지 않음 ⇒ 그러므로 union을 수행하려면 select 문에 오는 컬럼과 그 컬럼의 데이터 타입이 동일해야함 ⇒ union을 하기 위해 select 한 집합의 액세스 효율성이 중요
그림
테이블 구조 : emp1은 emp테이블을 복제한 테이블
테이블 구조 및 컬럼명까지 동일한 테이블들의 조인
서로 다른 테이블들의 조인
union
join 예제
방사형 M:M구조에서는 먼저 한쪽을 "1"로 만들어서 조인한다.
인라인뷰 사용 : 한 조인할 컬럼으로 group by시켜 조인할 컬럼을 유일한 값(1. primary key)이 되게 함
인라인 뷰에서 나온 집합과 나머지 집합을 조인하고 추출하고자하는 컬럼들로 group by하여 결과 추출
M:M조인에서 한 쪽 M을 1로 만든 후 다른 쪽 M과 연결해야하는 추가적인 작업이 들어감
M:M조인에서 각각의 집합을 먼저 연결할 컬럼으로 group by하여 1:1로 만들 후 조인하는 방법도 있으나 어쨌든 이 방법도 연결해야하는 추가적인 작업이 필요