Inner Join
- join column을 기준으로 두 테이블을 결합
- 두 테이블의 join column에 공통으로 존재하는 값만 조회됨

<inner join 예시>
- CountryID와 ID에 공통으로 존재하는 값은 3
- join column의 값이 3인 Left Table의 데이터와 Right Table의 데이터를 하나의 row에 결합하여 하나의 테이블로 표현

Outer Join
left outer join
- join column을 기준으로 왼쪽 테이블에 오른쪽 테이블을 결합
- 왼쪽 테이블의 데이터는 모두 조회됨, 오른쪽 테이블은 join column에 공통으로 존재하는 데이터만 조회됨
- join column의 값이 왼쪽 테이블에는 있지만, 오른쪽 테이블에 없는 경우 NULL으로 조회됨

<left outer join 예시>
- Left Table에 CountryID가 1,3인 데이터가 존재하고, Right Table에 ID가 1,3인 데이터가 존재 → 같은 값을 가지는 row끼리 결합됨
- Left Table에 CountryID가 4인 데이터는 존재하지만, Right Table에 ID가 4인 데이터는 존재하지 않음 → 해당 row의 Country는 NULL이 됨
- Left Table에 CountryID에 2인 데이터가 없기 때문에, Right Table에 ID가 2인 데이터는 조회되지 않음

right outer join
- join column을 기준으로 오른쪽 테이블에 왼쪽 테이블을 결합
- 오른쪽 테이블의 데이터는 모두 조회됨, 왼쪽 테이블은 join column에 공통으로 존재하는 데이터만 조회됨
- join column의 값이 오른쪽 테이블에는 있지만, 왼쪽 테이블에 없는 경우 NULL으로 조회됨

<right outer join 예시>
- Right Table에 ID가 3인 데이터가 존재하고, Left Table에 CountryID가 3인 데이터가 존재 → 같은 값을 가지는 row끼리 결합됨
- Right Table에 ID가 1,4인 데이터는 없기 때문에, Left Table에 CountryID가 1,4인 데이터는 조회되지 않음

full outer join
- join column을 기준으로 오른쪽 테이블과 왼쪽 테이블을 결합
- join column에 공통으로 존재하지 않는 데이터는 NULL과 결합하여 조회됨
- Left Join과 Right Join을 합친 결과와 같음
<full outer join 예시>
- Left Table에 CountryID가 1,2,3인 데이터가 존재하고, Right Table에 ID가 1,2,3인 데이터가 존재 → 같은 값을 가지는 row끼리 결합됨
- Right Table에 ID가 4인 데이터는 있지만 때문에, Left Table에 CountryID가 4인 데이터는 없음 → ID가 4인 데이터는 NULL와 결합됨

Cross Join
- 하나의 테이블에 있는 각 행을 다른 테이블의 각 행과 결합
- 별도의 join column 없이 두 테이블을 조인
- A 테이블 row 개수 x B 테이블 row 개수 만큼의 row를 가진 테이블이 출력

Self Join
- inner join, outer join 등을 수행할 때 join 대상을 자기 자신으로 하여 수행


참고:
https://www.educba.com/sql-self-join/
https://learn.microsoft.com/ko-kr/power-query/merge-queries-left-outer
'CS > Database' 카테고리의 다른 글
[Database] JOIN 알고리즘 종류 (0) | 2024.09.13 |
---|---|
[Database] Index (0) | 2024.09.13 |
[Database] 트랜잭션(transaction) (0) | 2024.05.21 |
[Database] 데이터 모델의 이해 (1) (0) | 2024.05.09 |
[Database] Database 기본 용어 (1) | 2024.04.28 |