🤔 Join 너는 무엇이냐Join은 왜 필요한거에요?EQUI JOINNon EQUI JOININNER JOINNATURAL JOINUSING 조건절ON 조건절CROSS JOINOUTER JOINLEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOIN
🤔 Join 너는 무엇이냐
- 두 개 이상의 테이블을 연결 또는 결합하여 데이터를 출력하는 것을 말합니다.
Join은 왜 필요한거에요?
- 조인이 필요한 이유는 정규화에서 출발하게 됩니다.
- 정규화란 불필요한 데이터의 정합성을 확보하고 이상현상 발생을 피하기 위해서 테이블을 분할하여 생성하는 것을 말합니다. 정규화란 표현도 있는 것처럼 반정규화도 존재합니다.
EQUI JOIN
- 두 개의 테이블 간 컬럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법입니다.
- JOIN의 조건은 WHERE 절에 기술하게 되는데 = 연산자를 사용하여 표현합니다.
Non EQUI JOIN
- 두 개의 테이블 간에 컬럼 값들이 서로 정확하게 일치하지 않는 경우에 사용되는 방법입니다.
- BETWEEN, >, ≥, ≤, < 등 연산자들을 사용하여 표현합니다.
INNER JOIN
- 내부 조인이라고도 하며 JOIN 조건에서 동일한 값이 있는 행만 반환합니다.
- INNER JOIN은 WHERE 절에서 사용하던 JOIN 조건을 FROM 절에서 정의하겠다는 의미이므로 USING 이나 ON 절을 필수적으로 사용해야 합니다.
NATURAL JOIN
- 두 테이블 간의 동일한 이름을 갖는 모든 컬럼들에 대해 EQUI JOIN을 수행합니다.
- NATURAL JOIN이 명시되면 USING, ON, WHERE 절에서 조인 조건을 정의할 수 없습니다.
- 위 처럼 작성하게 되면 두 개의 테이블에서 공통된 컬럼을 자동으로 인식하여 조인 처리를 합니다.
- 조인에 사용되는 컬럼들은 같은 데이터 유형이여야 하며, 별칭이나 접두사를 붙일 수 없습니다.
- * 처럼 별도의 컬럼 순서를 지정하지 않으면 NATURAL JOIN의 기준이 되는 컬럼들이 다른 컬럼보다 먼저 출력됩니다.
USING 조건절
- NATURAL JOIN 에서는 모든 일치되는 컬럼들에 대해 조인이 이루어지지만, FROM 절에 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있습니다.
- 별칭은 부여할 수 없습니다.
ON 조건절
- JOIN 서술부(ON 조건절)와 JOIN 서술부(WHERE 조건절)를 분리하여 이해가 쉬우며 컬럼명이 다르더라도 조인조건을 사용할 수 있다는 장점이 있습니다.
- NATURAL JOIN 에서는 모든 일치되는 컬럼들에 대한 동등 조건이지만, 임의의 JOIN 조건을 지정하거나, 이름이 다른 컬럼명을 JOIN 조건으로 사용하거나, JOIN 컬럼명을 명시하기 위해서 ON 조건절을 사용합니다.
- ON 조건절을 사용한 JOIN이 경우는 별칭이나 테이블명과 같은 접두사를 사용하여 SELECT에 사용되는 컬럼을 명확하게 지정해주어야 합니다.
CROSS JOIN
- 일반 집합 연산자의 PRODUCT 개념으로 테이블간 조인조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 말합니다.
- 두개의 테이블에 대한 CROSS JOIN 결과는, 양쪽 집합의 M*N 건의 데이터 조합이 발생합니다.
OUTER JOIN
- JOIN 조건에서 동일한 값이 없는 행동 반환할 때 사용하는 방법입니다.
LEFT OUTER JOIN
- 조인 수행 시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 우측 테이블에서 JOIN 대상 데이터를 읽어옵니다.
- 우측 테이블에서 만족하는 데이터가 없는 경우 NULL 값으로 채웁니다.
RIGHT OUTER JOIN
- 조인 수행 시 먼저 표기된 우측 테이블에서 해당하는 데이터를 먼저 읽은 후, 좌측 테이블에서 JOIN 대상 데이터를 읽어옵니다.
- 좌측 테이블에서 만족하는 데이터가 없는 경우 NULL 값으로 채웁니다.
FULL OUTER JOIN
- 조인 수행 시 좌촉, 우측 테이블의 모든 데이터를 읽어 조인하여 결과를 반환합니다.
- RIGHT OUTER JOIN 과 LEFT OUTER JOIN의 결과를 합집합으로 처리한 결과와 동일합니다.
- 단, UNION ALL이 아닌 UNION 기능고 같으므로 중복되는 데이터는 삭제합니다.