Tech Log

[DataBase] 조인(join) 본문

Computer Science/DataBase

[DataBase] 조인(join)

yuhee kim 2023. 3. 3. 21:30

조인(join)

하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것.

 

MySQL에서는 JOIN 이라는 쿼리,

MongoDB에서는 lookup이라는 쿼리로 사용한다.

 

MongoDB를 사용할 때 lookup은 되도록 사용하지 않아야 한다.

MongoDB에서의 조인 연산은 관계형 데이터베이스보다 성능이 안좋다고 벤치마크 테스트에서 알려져 있다.

 

MongoDB에서의 조인 연산 성능

 

 

따라서 조인하는 작업이 많을 경우 관계형 데이터베이스를 사용하는 것이 더 낫다.

 

조인의 종류

출처 : 면접을 위한 CS 전공지식 노트(2022)

  • 내부 조인(inner join) : 왼쪽 테이블과 오른쪽 테이블의 두 행이 일치하는 행이 있는 부분만 표기
  • 왼쪽 조인(left outer join) : 왼쪽 테이블의 모든 행이 결과 테이블에 표기
  • 오른쪽 조인(right outer join) : 오른쪽 테이블의 모든 행이 결과 테이블에 표기
  • 합집합 조인(full outer join) : 두 개의 테이블을 기반으로 조인 조건에 만족하지 않은 행까지 모두 표기

 

내부 조인

두 테이블 간에 교집합을 나타낸다.

내부 조인을 이용한 SQL 쿼리는 다음과 같다.

SELECT * FROM TableA A
INNER JOIN TableB B ON
A.key = B.key

 

왼쪽 조인

(*왼쪽 조인과 오른쪽 조인을 설명할 때 왼쪽 테이블은 A, 오른쪽 테이블은 B라고 설명하겠습니다)

테이블 B의 일치하는 부분의 레코드와 함께 테이블 A를 기준으로 완전한 레코드 집합을 생성한다.

만약 테이블 A 기준으로 테이블 B에 일치하는 항목이 없다면 null 값이 나온다.

 

왼쪽 조인을 이용한 SQL 쿼리는 다음과 같다.

SELECT * FROM TableA A
LEFT JOIN TableB B ON
A.key = B.key

 

오른쪽 조인

테이블 A에서 일치하는 부분의 레코드와 함께 테이블 B를 기준으로 완전한 레코드 집합을 생성한다.

만약 테이블 B 기준으로 테이블 A에 일치하는 항목이 없다면 null 값이 나온다.

 

오른쪽 조인을 이용한 SQL 쿼리는 다음과 같다.

SELECT * FROM TableA A
RIGHT JOIN TableB B ON
A.key = B.key

 

합집합 조인(완전 외부 조인)

양쪽 테이블에서 일치하는 레코드와 함께 테이블 A와 테이블 B의 모든 레코드 집합을 생성한다.

서로 일치하는 항목이 없으면 누락된 쪽에 null 값이 포함된다.

 

합집합 조인을 이용한 SQL 쿼리는 다음과 같다.

SELECT * FROM TableA A
FULL OUTER JOIN TableB B ON
A.key = B.key

 

참조
  • 주홍철, 면접을 위한 CS 전공지식 노트, 길벗(2022)

'Computer Science > DataBase' 카테고리의 다른 글

[DataBase] 인덱스  (0) 2023.02.25
[DataBase] 데이터베이스의 종류  (0) 2023.02.25
[DataBase] 트랜잭션  (0) 2023.02.18
[DataBase] 정규화(Normalization)  (0) 2023.02.18
[DataBase] ERD(Entity Relationship Diagram)  (0) 2023.02.17
Comments