Join 이란?

관계(Relationship)를 맺는다는 건 식별자를 상속하고, 상속된 속성을 매핑키로 활용하여 데이터를 결합해 볼 수 있다는 의미다. 이를 SQL에서는 Join이라고 한다. - SQL 전문가 가이드

Join의 종류

조인은 크게 Cross Join, Qualified Join으로 나눌 수 있다.

CROSS JOIN

Cross Join은 카테시안 곱(Cartesian product) 원리를 사용한다.

연산 결과에 대한 카디널리티(Cardinality)는 N * M이 된다.

QUALIFIED JOIN

Qualified Join은 집합 관계를 원리를 이용한 조인 기법이다.

  • Inner Join: 집합적으로 교집합에 해당한다.
  • Left Outer Join: 왼쪽 집합을 기준으로 조인하되, 매칭되는 요소가 없으면 NULL로 표시한다.
  • Right Outer Join: 오른쪽 집합을 기준으로 조인하되, 매칭되는 요소가 없으면 NULL로 표시한다.
  • Full Outer Join: Left, Right Join을 모두 한 결과와 같다.

PostgreSQL 시놉시스 분석

1
2
3
4
5
6
7
8
9
10
# Join Syntax
T1 join_types T2 [join_condition]

# Cross Join
T1 CROSS JOIN T2

# Qualified Join
T1 { [INNER] | {LEFT|RIGHT|FULL} [OUTER] } JOIN T2 ON boolean_expression
T1 { [INNER] | {LEFT|RIGHT|FULL} [OUTER] } JOIN T2 USING (join column list)
T2 NATURAL { [INNER] | {LEFT|RIGHT|FULL} [OUTER] } JOIN T2

Q. 위 시놉시스에 따르면 T1 JOIN T2 ON T1.id = T2.id에서 키워드를 생략하지 않고 쓰면 어떤 문장이 되는가?

A. T1 INNER JOIN T2 ON T1.id = T2.id

INNER JOINJOIN으로 생략해서 쓸 수 있다.

LEFT OUTER JOINLEFT JOIN으로 생략해서 쓸 수 있다.

ON, USING, NATURAL

ON은 부울린 조건(boolean condition)을 이용하여 매핑한다.

USING은 지정한 컬럼 리스트 기준으로만 매핑한다.

NATURAL은 USING과 유사할 수 있는데, 동일한 컬럼명을 모두 매핑한다는 점에서 차이가 있다.

SELF JOIN

셀프 조인은 특별한 문법이 존재하는 것이 아니라, 자기 자신과 매핑하면 그것이 셀프 조인이다.

계층형 데이터 모델을 구축하는 데 이용될 수 있다.

참고문헌