JOIN
INNER JOIN
1) INNER JOIN
- 교집합
- 특정 컬럼 기준, 정확히 매칭된 요소만 출력 중복되는 요소만 출력한다
- 따라서 겹치지 않는 행이 존재할 경우, 그 행은 결과에서 제외한다
- NULL값은 포함되지 않는다
OUTER JOIN
- 특정 컬럼 기준, 한쪽은 모두 출력하고 다른 한쪽은 매칭되는 요소만 출력한다
- 동일한 값이 없는 행도 반환할 때 사용하는 구문이다
- 즉, 조건에 맞지 않는 데이터도 표시하고 싶을 때
OUTER JOIN
을 사용하며, NULL값을 포함하게 된다
1) LEFT JOIN
- 왼쪽의 모든 행을 조회한다
- 조인문의 왼쪽 테이블의 모든 결과를 가져온 후, 오른쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시한다
- 다시 말해서, 정보를 온전하게 출력하고 싶은 테이블을 왼쪽에 두고, 정보가 있으나 없으나 상관없는 테이블은 오른쪽에 두면 된다.
2) RIGHT JOIN
- 오른쪽의 모든 행을 조회한다
- 조인문의 오른쪽 테이블의 모든 결과를 가져온 후, 왼쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시한다
3) FULL OUTER JOIN
- 합집합
INNER
+ LEFT OUTER
+ RIGHT OUTER
- 테이블간 출력 가능한 모든 데이터를 포함해 출력한다
- 아래와 같이 연달아서 보여준다
(출처: fast campus)
- 결과 테이블이 매우 커질 수 있으므로 주의해야 한다
- mysql에서는
FULL OUTER JOIN
을 지원하지 않으므로, LEFT JOIN
과 RIGHT JOIN
을 UNION
하는 방식으로 만들어준다