각 조인의 개념과 쿼리를 알아봅니다.
-
개념
- 조인이란 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것을 말한다.
-
DB 종류별 명령어
- MySQL - join, MongoDB - lookup
- 참고 사항: MongoDB에서는 되도록이면 lookup을 사용하지 말아야 한다. 해당 연산은 관계형 데이터베이스보다 성능이 떨어진다고 여러 벤치마크 테스트에서 알려져 있다. 따라서 여러 테이블을 조인하는 작업이 많을 경우 MongoDB보다는 관계형 데이터베이스를 사용해야 한다.
-
조인의 종류
- 내부 조인(inner join) : 왼쪽 테이블과 오른쪽 테이블의 두 행이 일치하는 행이 있는 부분만 표기
- 왼쪽 조인(left outer join) : 왼쪽 테이블의 모든 행이 결과 테이블에 표기
- 오른쪽 조인(right outer join) : 오른쪽 테이블의 모든 행이 결과 테이블에 표기
- 합집합 조인(full outer join) : 두 개의 테이블을 기반으로 조인 조건에 만족하지 않은 행까지 모두 표기
-
이후 예제에 사용되는 테이블
-
개념
- 두 테이블에서 조인 조건을 만족하는 레코드(튜플)로 결과 테이블을 만드는 방식이다.
- 두 테이블 모두 데이터가 있어야만 결과를 얻을 수 있다.
- 디폴트 조인 방식으로, 가장 많이 사용되는 조인 방식이다.
- 조인 조건에서 null 값을 가지는 레코드는 결과 테이블에 포함되지 못한다.
-
SQL 쿼리
-
개념
- 두 테이블에서 조인 조건을 만족하지 않는 레코드(튜플)들도 결과 테이블에 포함하는 조인 방식이다.
- 한쪽 테이블에만 데이터가 있어도 결과를 얻을 수 있다.
-
개념
- 조인문 왼쪽 테이블의 모든 결과를 가져와서 오른쪽 테이블의 데이터와 매칭하고, 매칭되는 데이터가 없는 경우 null로 표시한다.
-
SQL 쿼리
-
개념
- 조인문 오른쪽 테이블의 모든 결과를 가져와서 왼쪽 테이블의 데이터와 매칭하고, 매칭되는 데이터가 없는 경우 null로 표시한다.
-
SQL 쿼리
-
개념
- 양쪽 모두 조인 조건에 부합하지 않는 레드코들까지도 결과 테이블에 포함한다.
- 서로 일치하는 항목이 없으면 누락된 쪽에 null 값이 포함된다.
-
비고
- MySQL에서는 합집합 조인을 지원하지 않는다. (PostgreSQL에서 지원)
-
SQL 쿼리
-
관련 서적
-
이미지 출처