✏️ 조인의 종류
조인(Join)이란 두 개 이상의 테이블 또는 데이터 집합을 묶어서 하나의 결과물을 만드는 데이터베이스 연산입니다. 이 연산은 관계형 데이터베이스 시스템(RDBMS)에서 주로 사용되며, MySQL 같은 관계형 데이터베이스에서는 JOIN이라는 쿼리로 이를 처리합니다.
MongoDB와 같은 NoSQL 데이터베이스에서도 유사한 작업을 수행할 수 있는데, 이는 $lookup 연산을 통해 가능합니다. $lookup은 두 개의 컬렉션을 결합하는 연산입니다, 이는 관계형 데이터베이스의 JOIN 연산과 비슷한 기능을 수행합니다.
그러나 중요한 점은 MongoDB가 기본적으로 문서 지향적인 NoSQL 데이터베이스로 설계되었다는 것입니다.
이로 인해 MongoDB는 조인 연산에 관계형 데이터베이스만큼 특화되어 있지 않습니다. $lookup 연산을 사용하여 조인과 유사한 작업을 수행할 수 있지만, 이는 관계형 데이터베이스의 JOIN 연산에 비해 일부 성능적인 제약이 있을 수 있습니다.
📌 내부 조인 (Inner Join)
왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표기합니다.
SELECT A.*, B.*
FROM table_A A
INNER JOIN table_B B ON A.id = B.id;
내부 조인은 두 테이블에서 조인 조건을 만족하는 행만을 반환합니다. 조건에 일치하지 않는 행은 결과에 포함되지 않습니다.
📌 외부 조인 (Left Outer Join)
왼쪽 테이블의 모든 행과 그에 해당하는 오른쪽 테이블의 행이 결과 테이블에 표기됩니다. 오른쪽 테이블에 일치하는 행이 없을 경우 NULL 값을 가집니다.
SELECT A.*, B.*
FROM table_A A
LEFT OUTER JOIN table_B B ON A.id = B.id;
왼쪽 테이블의 모든 행이 결과에 포함되며, 오른쪽 테이블의 일치하는 행이 없을 경우 해당 컬럼은 NULL을 가집니다.
📌 오른쪽 조인 (Right Outer Join)
오른쪽 테이블의 모든 행과 그에 해당하는 왼쪽 테이블의 행이 결과 테이블에 표기됩니다. 왼쪽 테이블에 일치하는 행이 없을 경우 NULL 값을 가집니다.
SELECT A.*, B.*
FROM table_A A
RIGHT OUTER JOIN table_B B ON A.id = B.id;
오른쪽 테이블의 모든 행이 결과에 포함되며, 왼쪽 테이블의 일치하는 행이 없을 경우 해당 컬럼은 NULL을 가집니다.
📌 합집합 조인 (Full Outer Join)
두 개의 테이블을 기반으로 조인 조건에 만족하지 않는 행까지 모두 표기합니다. 일치하지 않는 행은 NULL 값을 가집니다.
SELECT A.*, B.*
FROM table_A A
FULL OUTER JOIN table_B B ON A.id = B.id;
두 테이블의 모든 행이 결과에 포함되며, 어느 한 쪽 테이블에만 존재하는 행은 다른 테이블의 칼럼은 NULL 값을 가집니다.
댓글