[TIL] day33

Hyebin·2022년 2월 27일
0

TIL

목록 보기
34/47

TIL

JOIN이란?

두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 merge하는데 사용된다.

조인의 방식에 따라 두 가지가 달라진다.

  1. 어떤 레코드들이 선택되는지?
  2. 어떤 필드들이 채워지는지?

JOIN에는 6가지 종류가 있다.

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

보통 INNER JOIN이나 LEFT 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';

JOIN의 방법은 위와 같으며 FROM 다음에 left table이라고 한다면 JOIN 다음은 right table이 오고 ON으로 JOIN의 조건을 적용한다.

____에는 INNER, FULL, LEFT, RIGHT, CROSS가 들어간다.

JOIN시 고려해야할 점

  • 중복 레코드가 없어야 한다. (중요함!!!)
    primary key의 uniqueness가 보장되는지 확인해야함
  • 조인하는 테이블들간의 관계를 명확하게 정의해야한다.
    • One to one
    • One to many
    • Many to many
  • 어느 테이블을 베이스로 사용할지 결정해야 한다.
    (FROM에 사용할지)

INNER JOIN

  • 양쪽 테이블에서 매치가 되는 레코드들만 리턴한다.
  • 양쪽 테이블의 필드가 모두 채워진 상태로 리턴된다.

JOIN 앞에 INNER를 붙여주지 않고 JOIN만 사용해도 INNER JOIN으로 사용된다.

LEFT JOIN

  • 왼쪽 테이블의 모든 레코드들을 리턴한다.
  • 오른쪽 테이블의 필드는 왼쪽 레코드와 매칭되는 경우에만 채워진 상태로 리턴된다.

RIGHT JOIN 또한 방향만 반대로 같은 개념

FULL JOIN

  • 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴한다.
  • 매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴된다.

CROSS JOIN

  • 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴한다.

SELF JOIN

  • 동일한 테이블을 alias를 달리해서 자기 자신과 조합한다.
//example
SELECT * FROM raw_data.Vital v1
JOIN raw_data.Vital v2 ON v1.vitalID = v2.vitalID;
profile
공부중입니다 :D

0개의 댓글

관련 채용 정보