SQL JOINs   SQL 조인

(2019-09-28)

SQL 다중 테이블, SQL 집합 연산, UNION, 유니온, JOIN, 조인

1. 수학적으로, 집합의 `집합 연산`과 관계형 DB의 `관계 연산` 비교집합의 `집합 연산`
     - 합집합 (UNION)
        . 관계형 DB 대응 例) WHERE OR,  SELECT () UNION SELECT ()
     - 교집합 (INTERSECTION) 
        . 관계형 DB 대응 例) WHERE AND, SELECT () INTERSECT SELECT ()
     - 차집합 (DIFFERENCE)
        . 관계형 DB 대응 例) SELECT () EXCEPT SELECT ()
     - 곱집합 (PRODUCT)
        . 관계형 DB 대응 例) CROSS JOIN

  ㅇ 관계형 DB의 `관계 연산`
     - SELECT : (1 이상의 테이블에서 데이터를 추출)
     - PROJECT : 어떤 속성(열,칼럼) 만을 돌려줌으로써, 각 튜플의 크기를 줄임
     - JOIN   : (1 이상의 테이블들을 조합시킴)
     - DIVIDE : (실제 구현 없음)


2. JOIN (조인)

  ㅇ JOIN 형태
      

  ㅇ 내부 조인 (INNER JOIN)
     - 기본적으로, 가능한 모든 행과의 조합(카르테시안 곱)을 생성

     - 구분 : (NATURAL JOIN), (INNER JOIN 또는 JOIN), (CROSS JOIN)
        . 동일 조인 (EQUI-JOIN 또는 INNER JOIN 또는 JOIN)
           .. 테이블 간 특정 조건 하에서, 동일 값이 있는 행 만 반환
           .. 즉, 이 경우는, USING 조건절이나 ON 조건절을 반드시 사용해야 함

        . 자연 조인 (NATURAL JOIN)
           .. 테이블 간에 동일 이름을 갖는 칼럼이 있을 때, 동일한 값이 있는 행 만 반환
           .. 구문상, 테이블명 간에 JOIN 없이 그냥 ,(콤마) 만으로 구분하여도 같은 효과를 보임
           .. 대부분의 전문가들이 이의 사용을 비 권장하고 있음

        . 교차 조인 (CROSS JOIN)
           .. 테이블 간 JOIN 조건이 없는 경우 가능한 모든 데이터의 조합
           .. 테이블 간에 나올 수 있는 모든 경우의 행이 다 반환되게 됨

     - 例) 두 테이블에서 같은 값을 갖는 레코드들을 생성하려면,
        .  SELECT column FROM table1 a INNER JOIN table2 b ON a.column = b.column;

  ㅇ 외부 조인 (OUTER JOIN) 
     - 기본적으로, 기준 테이블의 행과 다른 테이블의 일치하지 않은 행도 보이게 함
 
     - 구분 (왼쪽 또는 오른쪽 방향)
        . LEFT OUTER JOIN 또는 LEFT JOIN
        . RIGHT OUTER JOIN 또는 RIGHT JOIN
        . FULL OUTER JOIN

     * [참고]
        . 내부 조인은, 조건에 맞는 행만 반환하므로, 쿼리 구문상 두 테이블의 순서가 상관없지만,
        . 외부 조인은, 기준 테이블에 따라 왼쪽,오른쪽 방향으로 구분할 수 있음


3. UNION (유니온)

  ㅇ 사실상, 위의 JOIN 중 FULL OUTER JOIN과 같은 개념

  ㅇ 2 이상의 SELECT 문을 결합하는데 사용 
     - SELECT () UNION SELECT ()

  ㅇ UNION 구분
     - UNION ALL : 공통 교집합까지 중복 포함하며, 그대로 보여 줌 (속도 빠름)
     - UNION : 공통 교집합의 중복을 제거하며, 정렬 작업이 내부적으로 발생 (속도 느림)


4. [기타]  서브 쿼리 (Sub Query)

  ㅇ SELECT 문 하부의 WHERE 절이나 FROM 절 내 사용되는 부분 쿼리(서브 쿼리)


[SQL] 1. SQL 2. SQL 기초 활용 3. SQL 조인 4. RQBE 5. SAG 6. 테이블 생성 변경

 
        최근수정     요약목록     참고문헌