-
DB - Join
Join
-
2개의 테이블에 대해 연관된 튜플들을 결합해 새로운 릴레이션을 반환한다.
- Join은 크게 inner & outer Join 으로 구분된다.
- Join 속성: 연결 고리가 되는 공통 속성을 의미한다.
Inner Join
- Join조건에 만족하는 결과만 조회한다.
- Equi Join
- Join 속성을 기준으로 '=' 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성한다.
- ex) SELECT t1.name FROM t1, t2 WHERE t1.id=t2.id
- Non-Equi Join
- Join 조건에 '=' 조건이 아닌 나머지 비교 연산자(BETWEEN, <, > 등)를 사용하는 Join방법.
- ex) SELECT t1.name FROM t1, t2 WHERE t1.age > t2.age
Outer Join
- Join 조건에 만족하지 않는 튜플도 결과에 포함한다.
- Left Outer Join
- Join 문의 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 null로 표시한다.
- ex) SELECT a.name b.age FROM a left outer join b ON a.id = b.id
- Right Outer Join
- Join 문의 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 null로 표시한다.
- ex) SELECT a.name b.age FROM a right outer join b ON a.id = b.id
- Full Outer Join
- Left Outer Join과 Right Outer Join을 합친 것으로, 양쪽 모두 조건이 일치하지 않는 것까지 모두 결합해 출력한다.
- ex) SELECT a.name, b.age FROM a full outer join b ON a.id = b.id
- 각각을 벤다이어그램으로 표현하면 다음과 같다.
reference
goodgid.github.io/DB-Inner-Join/
goodgid.github.io/DB-Outer-Join/
'CS > DB' 카테고리의 다른 글
DB - 파티셔닝과 샤딩 (0) 2021.02.12 DB - NOSQL (0) 2021.02.12 DB - 스키마 (0) 2021.02.12 DB - ORM (0) 2021.02.11 DB - 정규화 (0) 2021.02.11 -