데브코스 TIL/SQL

SQL을 이용한 데이터 분석 Day 4 JOIN 소개

예니ㅣ 2023. 11. 16. 12:53

강의

JOIN

"JOIN"은 다수의 테이블을 공통 필드를 통해 merge하는 함수 입니다.

주로 스타 스키마로 분산되어 있는 테이블을 통합하는데 사용합니다.

JOIN의 종류를 정해주지 않은 경우 INNER JOIN이 기본으로 적용됩니다.

SELECT A.*, B.*
FROM tableA
___ JOIN tableB
	ON A.key1 = B.key1 and A.key2 = B.key2 ...

 

종류

  • INNER JOIN : 교집합
    • 양쪽 테이블에서 매칭되는 레코드만 리턴
    • 양쪽 테이블의 필드가 모두 채워진 상태로 리턴
  • FULL JOIN : 합집합
    • 양쪽 테이블의 모든 레코드 리턴
    • 매칭되는 경우에만 양쪽 테이블의 모든 필드들이 채워진 상태로 리턴
  • CROSS JOIN : 조합(Combination)
    • 양쪽 테이블의 모든 레코드의 조합 리턴
  • LEFT JOIN : 왼쪽에 포커싱
    • 왼쪽 테이블(Base)의 모든 레코드 리턴
    • 왼쪽 테이블과 매칭되는 오른쪽 테이블의 필드만 채워진 상태로 리턴
    • 왼쪽 테이블과 매칭되지 않는 오른쪽 테이블의 필드는 NULL 리턴
  • RIGHT JOIN : 오른쪽에 포커싱
    • 오른쪽 테이블(Base)의 모든 레코드 리턴
    • 오른쪽 테이블과 매칭되는 왼쪽 테이블의 필드만 채워진 상태로 리턴
    • 오른쪽 테이블과 매칭되지 않는 왼쪽 테이블의 필드는 NULL 리턴
  • SELF JOIN
    • 동일한 테이블을 alias 변경하여 자기 자신과 조인

 

고려 사항

  • 중복 레코드 존재 여부
  • Primary key 유일성 보장 여부
  • 테이블간의 관계 정의 명확성
    • One to one : 일대일대응 혹은 부분집
    • One to Many : 증폭 위험 존재
    • Many to One : 증폭 위험 존재
    • Many to Many : 일반적으로 One to One 혹은 One to Many로 변환
  • 베이스로 지정할 테이블 결정

 


BOOLEAN 타입 처리

BOOLEAN 타입 처리할 때에 True 혹은 False 혹은 NULL이 존재할 수 있음에 주의해야 합니다.

True 와 False는 = 혹은 != 혹은 <>을 사용하여 비교할 수 있습니다.

NULL은 IS 혹은 IS NOT만을 이용하여 비교할 수 있습니다.

 

"COALESCE"는 NULL 값을 다른 백업값으로 바꿔주는 함수 입니다.

COALESCE(exp1, exp2, exp3, ...)

 

공백 혹은 예약키워드는 ""로 둘러싸서 사용할 수 있습니다.