JOIN

JOIN

  • 두개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법을 말한다.

  • 검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용한다.

  • 여러 테이블을 마치 하나의 테이블인 것처럼 활용할 수 있다.

JOIN 을 사용하는 이유

  • 데이터를 중복 저장하면 그만큼의 저장공간이 필요하다.

  • 중복 저장한 열의 데이터를 수정할 경우, 해당 열을 가진 다른 데이터를 찾아서 모두 수정해야한다.

  • 중복을 최소화하면서 다른 테이블과 조합으로 데이터 셋을 만들기 위해서 조인이 필요하다.

JOIN 의 종류

  1. inner join

  2. (left, right, full) outer join

  3. cross join

  4. self join

1 . INNER JOIN

  • 조인키에 해당하는 각 테이블의 열 값을 비교해 조건에 맞는 값을 검색한다.

  • A와 B의 교집합

ON vs. WHERE

  • 둘다 데이터를 필터링 한다는 점에서는 역할이 비슷해보임

  • ON : 조인할 때 조인 조건을 위해서 사용

  • WHERE : 조인을 완료한 상태에서 조거에 맞는 값을 필터링하기 위해 사용

  • ON 구문을 사용해서 WHERE 와 같은 효과를 낼 수는 있지만, 데이터 매칭 과정에서 오차가 발생할 수 있으므로 반드시 성격을 분리해서 사용해야한다.

2. (left, right, full) OUTER JOIN

  • 조인하는 여러 테이블에서 한쪽에 데이터가 있고 한쪽에 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 전부 출력할 때 사용한다.

  • 조건에 만족하지 않아도 해당 행을 전부 출력하고자 할 때 사용할 수 있다.

  • 3가지 종류가 있다. - LEFT, RIGHT, FULL

  • 기준 테이블을 지정해야한다. - LEFT, RIGHT

LEFT JOIN

RIGHT JOIN

FULL OUTER JOIN

  • 보통 많이 쓰이지 않는다.

  • 양쪽 테이블 간 데이터를 비교할 때, 한쪽에는 있고 한쪽에는 없는 데이터를 찾기 위해서 종종 사용할 수 있다.

3. CROSS JOIN

  • 조인에 포함된 테이블의 카티션 곱을 산출한다.

  • 각 테이블의 모든 경우의 수를 조합한 데이터가 필요한 경우 사용한다.

  • 각각의 컬럼을 서로서로 모두 매치하기 때문에 from 구문에 조인 조건이 없다.

언제 사용되나

  • 예를 들면 모든 회원들에게 쿠폰 2종류씩 뿌릴 때! 회원 테이블 X 임시 쿠폰 테이블을 크로스 조인한 결과를 실제 쿠폰 테이블에 insert 하는 방식으로 사용할 수 있다.

4. SELF JOIN

  • 같은 테이블을 사용하는 특수한 조인이다.

  • 테이블의 행을 같은 테이블 안에 있는 다른 행과 조인한다.

  • 계층적인 구조를 테이블화 할 경우 사용한다.

  • 반드시 테이블에 alias 명을 사용해서 질의한다.

  • SELF JOIN 개념적인 적으로 별도의 JOIN 구문이 없다.

5. JOIN 시 주의사항

  • outer join 사용시 기준 테이블 순서에 주의한다.

  • on 절과 where 절을 목적에 맞게 반드시 구분한다.

  • outer join 과정에서 행 수가 늘어날 수 있음을 인지한다.

    • left outer join : 1:1 or N:1 은 문제 없지만

    • 1:N 의 경우 기준 테이블의 데이터가 중복되기 때문에 결과 행수가 늘어날 수 있다.

Last updated