[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에 사용할지) 결정해야함

 

JOIN의 종류

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL OUTER JOIN
  • SELF JOIN
  • CROSS JOIN

 

 

 

 

BELATED ARTICLES

more