SQL JOINs   SQL 조인

(2018-05-08)

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 
     - DIVIDE : (실제 구현 없음)


2. 다중 테이블에 대한 SQL 쿼리의 실용적 형태 구분

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

  ㅇ JOIN 형태
     


3. UNION (유니온)

  ㅇ 2 이상의 SELECT 문을 결합하는데 사용

  ㅇ 사실상, JOIN 중 FULL OUTER JOIN과 같은 개념
     - UNION ALL : 공통 교집합까지 중복 포함 그대로 보여 줌 (속도 빠름)
     - UNION : 공통 교집합의 중복을 제거하는, 정렬 작업이 내부적으로 발생 (속도 느림)


4. JOIN (조인)

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

     - 구분
        . NATURAL JOIN : 테이블 간에 동일 이름을 갖는 칼럼들 중에, 동일 값이 있는 행 만 반환
           .. 테이블명 간에 JOIN 없이 그냥 ,(콤마) 만으로 구분에도 같은 효과

        . INNER JOIN 또는 JOIN : 테이블 간 특정 조건 하에서, 동일 값이 있는 행 만 반환
           .. 즉, USING 조건절이나 ON 조건절을 반드시 사용해야 함

        . 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


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

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


[SQL] 1. SQL 2. SQL 기초 활용 3. SQL 조인 4. RQBE 5. SAG

 
        최근수정     요약목록(시험중)     참고문헌