[DB] JOIN

무1민·2023년 4월 16일
1

데이터베이스

목록 보기
4/11

JOIN

  • 둘 이상의 테이블에서 데이터가 필요한 경우 테이블 조인이 필요
  • 일반적으로 조인 조건을 포함하는 WHERE 절을 작성해야 한다.
  • 조인 조건은 일반적으로 각 테이블의 PK 및 FK로 구성됩니다.

JOIN의 종류

  • INNER JOIN
  • OUTER JOIN
    • LEFT OUTER JOIN
    • RIGHT OUTER JOIN

JOIN 조건의 명시에 따른 구분

  • NATURAL JOIN
  • CROSS JOIN(FULL JOIN, CARTESIAN JOIN)

JOIN시 주의

  • 조인의 처리는 어느 테이블을 먼저 읽을지를 결정하는 것이 중요(처리할 작업량이 상당히 달라진다.)
  • INNER JOIN : 어느 테이블을 먼저 읽어도 결과가 달라지지 않아 MySQL 옵티마이저가 조인의 순서를 조절해서 다양한 방법으로 최적화를 수행할 수 있다.
  • OUTER JOIN : 반드시 OUTER가 되는 테이블을 먼저 읽어야 하므로 옵티마이저가 조인 순서를 선택할 수 없다.

JOIN의 필요성

INNER JOIN

  • 가장 일반적인 JOIN의 종류이며 교집합이다.
  • 동등 조인(Equi-Join)이라고도 하며, N개의 테이블 조인 시 N-1개의 조인 조건이 필요함.


NATURAL JOIN

  • 두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 등가조인(EQUI JOIN)을 수행한다.
  • 이유) 두 컬럼이 연결

Outer Join

  • LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN으로 구분됨.
  • 어느 한쪽 테이블에는 해당하는 데이터가 존재하는데 다른 쪽 테이블에는 데이터가 존재하지 않을 경우 그 데이터가 검색되지 않는 문제점을 해결하기 위해 사용

LEFT/RIGHT OUTER JOIN

FULL OUTER JOIN

  • 양쪽 테이블을 기준으로 JOIN 조건에 일치하지 않는 데이터까지 출력
  • MySQL에서는 지원하지 않는다. left outer join과 right outer join을 union하여 사용

SELF JOIN

  • 같은 테이블끼리 JOOIN
  • 모든 사원의 사번, 이름, 매니저사번, 매니저이름

Non-Equi JOIN

  • table의 PK, FK가 아닌 일반 column을 join 조건으로 지정.
    모든 사원의 사번, 이름, 급여, 급여등급
profile
야호

0개의 댓글