학습주제
- JOIN이란?
- 다양한 종류의 JOIN
주요 학습 내용
- JOIN 이란?
- 두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 머지하는데 사용된다.
- 스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용된다.
- JOIN의 결과는 방식에 상관없이 양쪽의 필드를 모두 가진 새로운 테이블을 만들어내게 된다.
- 다양한 종류의 JOIN
- INNER JOIN
- 양쪽 테이블에서 매치가 되는 레코드들만 리턴한다.
- 양쪽 테이블의 필드가 모두 채워진 상태로 리턴된다.
- FULL OUTER JOIN
- 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴한다.
- 매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴된다.
- CROSS JOIN
- 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴한다.
- LEFT , RIGHT JOIN
- 베이스가 되는 테이블의 모든 레코드들을 리턴한다.
- 베이스가 아닌 테이블은 베이스와 매칭되는 경우에만 채워진 상태로 리턴된다.
- SELF JOIN
- 동일한 테이블을 alias들 달리해서 자기 자신과 조인한다.
- INNER JOIN
- JOIN 문법
SELECT A.*, B.* FROM raw_data.table1 A ## (INNER, FULL, LEFT, RIGHT, CROSS) JOIN raw_dataa.table2 B ON A.key1=B.key1 and A.key2 = B.key2 WHERE A.ts >= '2019-01-01';
- JOIN시 고려해야할 점
- 중복 레코드가 없고 Primary Key의 uniqueness가 보장됨을 체크한다. (매우중요)
- 조인하는 테이블들간의 관계를 명확하게 정의
- One to one
- One to many? (order vs orer_items)
- 이 경우는 중복이 더 큰 문제가 된다 (증폭) - Many to one?
- 방향만 바꾸면 One to many로 보는 것과 사실상 동일하다. - Many to many?
- 거의 없고 One to one 이나 one to many로 바꾸는 것이 좋다.
- 어느 테이블을 베이스로 잡을지 (From에 사용할지) 결정해야한다.
공부하면서 어려웠던 내용
- JOIN 개념을 알고 사용해보는데 생각보다 어려웠다 지속적으로 연습해야겠다.
반응형
'데이터분석' 카테고리의 다른 글
26. Pandas (1) | 2024.01.04 |
---|---|
25. 트랜잭션 및 SQL 고급 문법 (0) | 2023.12.30 |
23. GROUP BY & AGGREGATE (0) | 2023.12.29 |
22. SQL 코드 작성 (0) | 2023.12.29 |
21. 관계형 데이터 베이스, 데이터 웨어하우스 (1) | 2023.12.18 |