[MySQL] JOIN
2023. 1. 13. 14:28
JOIN이란?
- SQL 조인은 두 개 이상의 테이블들을 공통 필드를 가지고 통합
- 스타 스키마로 구성된 테이블들로 분산되어 있던 정보를 통합하는데 사용
- JOIN의 결과로 양쪽의 필드를 모두 가진 새로운 테이블을 만들어짐
- 조인의 방식에 따라 다음 두 가지가 달라짐
- 어떤 레코드들이 선택되는지?
- 어떤 필드들이 채워지는지?
- 조인의 방식에 따라 다음 두 가지가 달라짐
JOIN 문법
SELECT A.*, B.*
FROM raw_data.table1 A
____ JOIN raw_data.table2 B ON A.key1 = B.key1 and A.key2 = B.key2
WHERE A.ts >= '2019-01-01';
-- INNER, LEFT, RIGHT, CROSS
-- MySQL은 FULL 조인을 지원하지 않음
JOIN시 고려해야할 점
- 먼저 중복 레코드가 없고 Primary Key의 uniqueness가 보장됨을 체크 ○ 아주 중요함!!!
- 조인하는 테이블들간의 관계를 명확하게 정의
- One to one
- 완전한 one to one: session & session_channel
- 한쪽이 부분집합이 되는
- one to one ○ One to many? (order vs order_items)
- 이 경우 중복이 더 큰 문제됨 -> 증폭!!
- Many to one?
- 방향만 바꾸면 One to many로 보는 것과 사실상 동일.
- Many to many?
- 이는 one to one이나 one to many로 바꾸는 것이 가능하다면 변환하여 조인하는 것이 덜 위험
- 어느 테이블을 베이스로 잡을지 (From에 사용할지) 결정해야함
- One to one
JOIN의 종류
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
- FULL OUTER JOIN
- SELF JOIN
- CROSS JOIN
'Programming > MySQL' 카테고리의 다른 글
[MySQL] InsertUpdateDelete 2 (0) | 2023.01.12 |
---|---|
[MySQL] InsertUpdateDelete 1 (0) | 2023.01.12 |
[MySQL] 실습 내용 [GROUP BY] (0) | 2023.01.12 |
[MySQL] 실습 내용 [STRING, ORDER BY, DATE, TYPE CASTING] (0) | 2023.01.12 |
[MySQL] MySQLWorkbench 실습 환경 구축 및 실습 내용 (0) | 2023.01.12 |