[SQLD] join 종류

도지는·2024년 3월 7일

SQLD

목록 보기
7/8

INNER JOIN

: join 조건에서 동일한 값이 있는 행만 반환

  • Cross, outer join과 같이 사용할 수 없음
  • EQUI, NON EQUI JOIN은 모두 조건이 참인 행들만 반환하는 INNER 조인

EQUI JOIN

: 테이블 간에 두 컬럼 값이 정확하게 일치하는 경우에 사용되는 방법

  • 대부분 PK-FK 관계 기반(아닌 경우 O)
  • INNER JOIN에 참여하는 테이블이 N개 일때 필요한 조인 조건은 N-1개 이상
  • 계층형, 망형 데이터베이스와 비교해서 관계형 데이터베이스의 큰 장점
  • '=' 연산자를 사용해 표현

NON EQUI JOIN

: 테이블 간에 논리적인 연관관계를 가지고 있는 경우, 컬럼값이 서로 일치하지 않는 경우

  • '='이 아니라 BETWEEN, >, <= 등을 사용해서 조인

NATURAL JOIN

: 두 테이블 간의 JOIN 조건에서 동일한 이름을 갖는 모든 칼럼에 대해 EQUI JOIN을 수행

  • on 절을 쓰지 않아도 동일한 [칼럼값, 칼럼명, 도메인]에 대해 equi join을 수행
  • 동일한 칼럼명이 없다면 결과가 추출되지 않음
  • 칼럼명이 같으면 하나의 칼럼으로 처리해서 표시
  • inner join을 사용하면 두 테이블의 칼럼이 모두 표시됨

USING

: NATURAL JOIN에서는 컬럼명이 같은 모든 컬럼에 대해 JOIN이 이루어지지만 USING 조건절을 사용하면 컬럼명이 같은 것들 중에서 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있음

  • 조인 컬럼에는 ALIAS나 테이블명 같은 접두사를 붙일 수 없음

ON

  • 컬럼들에 대해 ALIAS나 접두사를 명확하게 지정해야함
  • ON 조인 서술부, WHERE 비조인 서술부를 분리해서 이해하기 쉬움
  • 컬럼명이 다르더라도 조인 조건을 사용할 수 있음

CROSS JOIN

동일한 값이 없을 때 테이블간 생길 수 있는 모든 데이터의 조합
양쪽 집합의 N*M건의 데이터 조합이 발생


OUTER JOIN

SELECT *
FROM TABLE1 A, TABLE2 B
WHERE A.ID = B.ID(+)
=
SELECT *
FROM TABLE1 A LEFT OUTER JOIN TABLE2 B
ON (A.ID = B.ID)

LEFT OUTER JOIN

: 왼쪽에 쓰인 테이블 기준
오른쪽 데이터가 NULL이더라도 왼쪽에 있는 데이터는 모두 출력

RIGHT OUTER JOIN

: 오른쪽에 쓰인 테이블 기준

FULL OUTER JOIN

좌우 테이블의 모든 데이터를 읽어 조인

  • LEFT, RIGHT 조인 결과를 합집합으로 처리한 결과와 동일(조인한 행들은 한번만 표시)

🔗 참고

join의 종류 및 차이점을 제대로 알자..!
조인

profile
왕왕

0개의 댓글