- 중복을 제거하기 위한 Table 디자인으로
- 분석가능한 의미있는 데이터를 보기 위해서는 반드시 Join의 연습이 필요하다.
- 아래 다이어그램의 이해를 바탕으로 어떤 Join을 사용할지 결정 해야 하며,
- 대부분 Inner Join또는 Left Join이 사용된다.
조인(JOIN) ?
두 개 이상의 테이블을 곱한 결과 집합 이라고 간단히 MSDN에 정의되어있다.
JOIN에는 INNER JOIN과 OUTER JOIN 그리고 CROSS JOIN 이렇게 세가지 종류가 있으며,
실무에서는 대부분 INNER JOIN과 LEFT OUTER JOIN을 사용한다.
그림을 보며 하나씩 알아가 보자.
1. INNER JOIN
교집합의 결과를 출력해 준다고 생각해주면 쉽다.
그림과 같이 두 테이블의 조건에 모두 만족하는 데이터만 출력해 준다.
JOIN유형 생략시 기본적으로 INNER JOIN으로 들어가게 되며,
INNER JOIN시 LEFT,RIGHT같은 기준을 정해주지 않는데, INNER JOIN은 두 조건을 모두 만족하는 결과를 출력해주기 때문에 기준이 되는 테이블을 정해주지 않아도 되기 때문이다.
2. OUTER JOIN
1) LEFT OUTER JOIN
OUTER JOIN이 INNER JOIN과 다른점은 조건에 맞지 않는 데이터도 표시해 준다는 점이다.
LEFT JOIN 수행시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후 나중에 표기된 우측 테이블에서 JOIN대상 데이터를 읽어온다.
즉 A테이블과 B테이블이 있을 때 A가 기준이 되어, A와 B를 비교한다음 B의 JOIN 컬럼에서 같은 값이 있을 때 해당 데이터를 가져오고 B의 JOIN컬럼에서 같은 값이 없는 경우에는 B테이블에서 가져오는 컬럼들은 NULL 값으로 채우는 것이다.
참고로 OUTER JOIN은 기본적으로 LEFT OUTER JOIN으로 명시되며, OUTER 키워드는 생략가능하다.
2) RIGHT OUTER JOIN
RIGHT JOIN은 LEFT JOIN과는 반대로 우측 테이블이 기준이 된다고 생각하면 된다.
3) FULL OUTER JOIN
JOIN 수행시 좌측과 우측의 모든 데이터를 읽고 JOIN 후 결과를 생성하며, 두 개의 테이블 모두가 기준이 된다.
합집합의 결과를 출력해준다고 생각하면 쉽다.
단 UNION ALL이 아닌 UNION 기능과 같으므로 중복 데이터는 삭제된다.
3. CROSS JOIN
CROSS JOIN은 상호 조인이라고도 불리며, 한 쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인시키는 기능을 한다.
그래서 CROSS JOIN의 결과 개수는 두 테이블의 행의 개수를 곱한 개수가 된다.
CROSS문은 모든 행에 대한 결합이 발생하기 때문에 ON구문을 사용할 수 없다.
예전에는 데이터에 대한 카피 후 연산이나 부분합을 구할 때 쓰였지만, 지금은 CUBE나 GROUPPING으로 대체되었고 현재는 잘 쓰지 않는다.
'ForBeginner' 카테고리의 다른 글
8-7. MSSQL(View) (0) | 2021.05.18 |
---|---|
8-5. 트리거(Trigger) (0) | 2021.05.18 |
8-2. MSSQL(Group by, Having) (0) | 2021.05.17 |
3-0. 왜 PLC의 이해가 필요한가? (0) | 2021.05.15 |
3-4. PLC 통신 종류 (0) | 2021.05.15 |