JOIN

김민석·2023년 8월 30일
0

JOIN

  • 하나 이상의 테이블에서 데이터를 조회하기 위해 사용
  • 수행 결과는 하나의 RESULT SET으로 나옴

내부 조인 (INNER JOIN)

  • 연결되는 컬럼의 값이 일치하는 행들만 조인됨
  • (= 일치하는 값이 없는 행은 조인에서 제외됨)

ANSI 표준 구문

  • 1) 연결에 사용할 두 컬럼명이 다른 경우
FROM 테이블명1
JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
  • 2) 연결에 사용할 두 컬럼명이 같은 경우
FROM 테이블명1
JOIN 테이블명2 USING(컬럼명)

오라클 전용 구문

  • 1) 연결에 사용할 두 컬럼명이 다른 경우
FROM 테이블명1, 테이블명2
WHERE 컬럼명1 = 컬럼명2
  • 2) 연결에 사용할 두 컬럼명이 같은 경우
    별칭 사용이 필요하다
FROM 테이블명1 별칭1, 테이블명2 별칭2
WHERE 별칭1.컬럼명 = 별칭2.컬럼명

외부 조인 (OUTER JOIN)

  • 두 테이블이 지정하는 컬럼값이 일치하지 않는 행도 조인에 포함을 시킨다

ANSI 표준 구문

  • 1) LEFT [OUTER] JOIN
    합치기에 사용한 두 테이블 중 왼편에 기술된 테이블의 컬럼 수를 기준으로 JOIN
FROM 테이블명1
LEFT JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
  • 2) RIGHT [OUTER] JOIN
    합치기에 사용한 두 테이블 중 오른편에 기술된 테이블의 컬럼 수를 기준으로 JOIN
FROM 테이블명1
RIGHT JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
  • 3) FULL [OUTER] JOIN
    합치기에 사용한 두 테이블이 가진 모든 행을 결과에 포함
FROM 테이블명1
FULL JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)

*오라클은 FULL JOIN을 사용 못함

오라클 전용 구문

  • 1) LEFT JOIN
    컬럼명1의 값이 컬럼명2의 값과 일치하지 않아도 추가하라는 뜻
FROM 테이블명1, 테이블명2
WHERE 컬럼명1 = 컬럼명2(+)
  • 2) RIGHT JOIN
FROM 테이블명1, 테이블명2
WHERE 컬럼명1(+) = 컬럼명2

교차 조인 (CROSS JOIN, CARTESIAN PRODUCT)

  • 조인되는 테이블의 각 행들이 모두 매핑된 데이터가 검색되는 방법(곱집합)
  • (자연 조인 실패 결과물로 확인 가능하다)

비등가 조인 (NON EQUAL JOIN)

  • '='(등호)를 사용하지 않는 조인문
  • 지정한 컬럼 값이 일치하는 경우가 아닌, 값의 범위에 포함되는 행들을 연결하는 방식
FROM 테이블명1
JOIN 테이블명2 ON(컬럼명 BETWEEN A AND B)

자체 조인 (SELF JOIN)

  • 같은 테이블을 조인

ANSI 표준 구문

FROM 테이블명 별칭1
JOIN 테이블명 별칭2 ON(별칭1.컬럼명1 = 별칭2.컬럼명2)

오라클 전용 구문

FROM 테이블명 별칭1, 테이블명 별칭2
WHERE 별칭1.컬럼명1 = 별칭2.컬럼명2(+)

자연 조인 (NATURAL JOIN)

  • 동일한 타입과 이름을 가진 컬럼이 있는 테이블 간의 조인을 간단히 표현하는 방법
  • 반드시 두 테이블 간의 동일한 컬럼명, 타입을 가진 컬럼이 필요하다
  • 없을 경우 교차 조인이 된다
FROM 테이블명1
NATURAL JOIN 테이블명2

다중 조인

  • N개의 테이블을 조회할 때 사용
  • 순서가 중요하다
FROM 테이블명1
JOIN 테이블명2 ON(컬럼명1 = 컬럼명2)
JOIN 테이블명3 ON(컬럼명1 = 컬럼명3)
...

0개의 댓글