JOIN
조인이란?
- 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력.
- 일반적인 경우, 행들은 PK나 FK 값의 연관 관계에 의해 JOIN이 성립.
- 예외적인 경우, PK나 FK의 관계가 없어도 논리적인 값들의 연관만으로도 JOIN이 성립 가능.
EQUI JOIN vs NON-EQUI JOIN
등가 조인은 두 개의 테이블 간에 컬럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법.
비등가 조인은 두 개의 테이블 간에 컬럼 값들이 서로 정확하게 일치하지 않는 경우에 사용되는 방법.
- 비등가 조인은 "=" 연산자가 아닌 다른 연산자들을 사용하여 JOIN을 수행한다.
INNER JOIN
- JOIN 조건에서 동일한 값이 있는 행만 반환.
- INNER JOIN은 JOIN 조건을 FROM 절에서 정의하겠다는 의미이므로 USING 조건절이나 ON 조건절을 필수적으로 사용해야 한다.
NATURAL JOIN
- 두 테이블 간에 동일한 이름을 갖는 모든 컬럼들에 대해 EQUI JOIN을 수행.
- NATURAL JOIN이 명시되면,추가로 USING 조건절이나 ON 조건절, WHERE 절에서 JOIN 조건을 정의할 수 없다.
- JOIN에 사용될 컬럼들은 같은 데이터 타입이어야 하며, ALIAS나 테이블 명과 같은 접두사를 붙일 수 없다.
USING 조건절
- FROM 절의 USING 조건절을 이용하면 같은 이름을 가진 컬럼들 중에서 원하는 컬럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있음.
- JOIN + USING 조건절 또한 NATURAL JOIN과 마찬가지로 JOIN 컬럼에 대해서는 ALIAS나 테이블 이름과 같은 접두사를 붙일 수 없다.
ON 조건절
- JOIN 서술부(ON 조건절)와 비 JOIN 서술부(WHERE 조건절)을 분리하여 이해가 쉽고, 컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다는 장점이 있다.
- JOIN+USING 조건절과 달리, ON 조건절을 사용한 JOIN의 경우는 ALIAS 나 테이블명과 같은 접두사를 사용하여 SELECT에 사용되는 컬럼을 논리적으로 명확하게 지정해줘야 한다.
CROSS JOIN
- 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 출력.
OUTER JOIN
- JOIN 조건에서 동일한 값이 없는 행도 반환 시 사용.
- INNER JOIN과 마찬가지로, JOIN 조건을 FROM 절에서 정의하겠다는 의미이므로 USING 조건절이나 ON 조건절을 필수적으로 사용해야 한다.
🎇 LEFT OUTER JOIN
- 조인 수행 시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어 온다.
- LEFT JOIN으로 OUTER 키워드를 생략해서 사용할 수 있다.
🎇 RIGHT OUTER JOIN
- 조인 수행 시 먼저 표기된 우측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 좌측 테이블에서 JOIN 대상 데이터를 읽어 온다.
- LEFT JOIN으로 OUTER 키워드를 생략해서 사용할 수 있다.