• 개념 및 특징
    1. 공통점 : 데이터 출력 형태는 다르나, union을 수행 한 집합을 group by 하면 조인과 같은 결과를 얻을 수 있다.
    2. 데이터 연결 유형에 따른 출력 형태로 본 특징
      1. join : 가로로 집합이 붙음. 특히 M:M조인의 경우 로우 수를 증가 시킴
        1. 조인은 공통키값(연결고리)을 중심으로 데이터를 연결
        2. 조인은 {*}키와 데이터를 분리{*}해서 데이터를 연결
      2. union all : 각 집합의 로우를 그대로 모아둠. 세로로 집합이 붙음
        1. union & group by는 구조를 중심으로 데이터를 모아서 연결
        2. union & group by는 {*}키와 데이터를 같이 읽어{*}와서 데이터를 연결
      3. union으로 데이터를 연결할 경우 데이터를 아래로 붙이므로 공통키값으로 연결하는 추가적인 작업이 발생하지 않음
        ⇒ 그러므로 union을 수행하려면 select 문에 오는 컬럼과 그 컬럼의 데이터 타입이 동일해야함
        ⇒ union을 하기 위해 select 한 집합의 액세스 효율성이 중요
      4. 그림
        1. 테이블 구조 : emp1은 emp테이블을 복제한 테이블
        2. 테이블 구조 및 컬럼명까지 동일한 테이블들의 조인
        3. 서로 다른 테이블들의 조인
        4. union
  • join 예제
    1. 방사형 M:M구조에서는 먼저 한쪽을 "1"로 만들어서 조인한다.
    2. 인라인뷰 사용 : 한 조인할 컬럼으로 group by시켜 조인할 컬럼을 유일한 값(1. primary key)이 되게 함
    3. 인라인 뷰에서 나온 집합과 나머지 집합을 조인하고 추출하고자하는 컬럼들로 group by하여 결과 추출
    4. M:M조인에서 한 쪽 M을 1로 만든 후 다른 쪽 M과 연결해야하는 추가적인 작업이 들어감
    5. M:M조인에서 각각의 집합을 먼저 연결할 컬럼으로 group by하여 1:1로 만들 후 조인하는 방법도 있으나 어쨌든 이 방법도 연결해야하는 추가적인 작업이 필요
    6. join query
  • union과 group by 예제
    1. 고려사항 : 추출하려는 컬럼들의 {*}데이터타입과 컬럼의 구조, 컬럼의 수가 동일{*}해야하며, {*}순서가 같아{*}야함
    2. A 집합과 B집합의 구조는 동일하므로 이 둘을 연결할 경우, 공통키 값은 필요없이 A 집합에 이어서 B 집합을 붙이면 된다.
    3. 두 집합을 붙인 후에 group by해서 결과를 추출
    4. A 집합과 B집합을 각각 액세스하는 것외에 별도의 조인과 같은 다른 처리가 없고, 다른 집합으로부터 상수값을 제공받지 않고도 처리범위를 줄일 수 있다
    5. {*}단계적 조인으로는 해결이 안 되는 양쪽 outer join 해결 가능{*}
    6. 공통키값이 아니어도 group by에 의해서 연결이 이루어지므로 공통키값이 있다면 어떤 컬럼도 연결 가능
    7. 연결할 컬럼에 인덱스가 없어도 데이터 연결에는 부담이 없음
    8. ⑥⑦의 내용에서 얻을 수 있는 중요한 특징 :
      1. 활용의 확장성
      2. 테이블에는 공통 컬럼이 없더라도 유사한 컬럼이나 어떤 값으로 치환이나 가공한 컬럼(to_number(null) ...)을 만들어서도 연결 가능
      3. row를 column으로 바꿔주는 기능
    9. union query