4.6 조인의 종류

·2023년 10월 8일
0

CS

목록 보기
17/23

조인(join) : 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어 하나의 결과물을 만드는 것

  • MySQL에서는 JOIN, MongoDB에서는 lookup이라는 쿼리로 이를 처리

  • 참고) MongoDB를 사용할 때 lookup은 되도록 사용하지 말아야 함. MongoDB는 조인 연산(lookup)에 대해 관계형 데이터베이스보다 성능이 떨어진다고 여러 벤치마크 테스트에서 알려져 있음. -> 따라서 여러 테이블을 조인하는 작업이 많을 경우 관계형 데이터베이스를 써야 한다.

  • 조인의 종류 : 내부 조인, 왼쪽 조인, 오른쪽 조인, 합집합 조인

  • 내부 조인(inner join) : 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행이 있는 부분만 표기

  • 왼쪽 조인(left outer join) : 왼쪽 테이블의 모든 행이 결과 테이블에 표기

  • 오른쪽 조인(right outer join) : 오른쪽 테이블의 모든 행이 결과 테이블에 표기

  • 합집합 조인(full outer join) : 두 개의 테이블을 기반으로 조인 조건에 만족하지 않는 행까지 모두 표기

왼쪽 테이블은 A, 오른쪽 테이블은 B라고 하자.

4.6.1 내부 조인

  • 두 테이블 간에 교집합
SELECT A.책번호, A.책명, B.가격
FROM A JOIN B
ON A.책번호 = B.책번호;

4.6.2 왼쪽 조인

  • 테이블 B의 일치하는 부분의 레코드와 함께 테이블 A를 기준으로 완전한 레코드 집합을 생성
  • 만약 테이블 B에 일치하는 항목이 없으면 해당 값은 null 값이 됨
SELECT A.책번호, A.책명, B.책번호, B.가격
FROM A LEFT JOIN B
ON A.책번호 = B.책번호;

4.6.3 오른쪽 조인

  • 테이블 A에서 일치하는 부분의 레코드와 함께 테이블 B를 기분으로 완전한 레코드 집합을 생성
  • 만약 테이블 A에 일치하는 항목이 없으면 해당 값은 null값이 됨.
SELECT A.책번호, A.책명, B.책번호, B.가격
FROM A RIGHT JOIN B
ON A.책번호 = B.책번호;

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

  • 양쪽 테이블에서 일치하는 레코드와 함께 테이블 A와 테이블 B의 모든 레코드 집합을 생성
  • 이때 일치하는 항목이 없으면 누락된 쪽에 null값이 포함되어 출력
SELECT A.책번호, A.책명, B.책번호, B.가격
FROM A FULL JOIN B
ON A.책번호 = B.책번호;

Reference

주홍철 작가님의 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.

0개의 댓글