본문 바로가기
Computer Science/데이터베이스

DML - JOIN

by Libi 2021. 7. 10.
반응형

대부분의 간단한 SQL 문제들은 SELECT 문을 통해 해결할 수 있지만 난이도가 올라가게 되면 JOIN 문을 활용해서 해결해야 하는 문제들이 등장한다. 따라서 한 번 JOIN에 대해 공부 및 정리해보려고 한다.

JOIN(조인)은 2개의 테이블에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환하는 친구이다.

JOIN은 크게 INNER JOIN(내부 조인)과 OUTER JOIN(외부 조인)으로 구분된다. 또한 일반적으로 FROM 절에 기술하지만, 릴레이션이 사용되는 어느 곳에서나 사용할 수 있다.

먼저 INNER JOIN부터 알아보자. INNER JOIN은 교집합 개념으로 생각하면 쉽다. 두 테이블에 공통적으로 존재하는 튜플들을 추출한다.

INNER JOIN은 일반적으로 EQUI JOIN과 NON-EQUI JOIN으로 구분된다. 조건이 없는 INNER JOIN을 수행하면 CROSS JOIN과 동일한 결과를 얻을 수 있다.

CROSS JOIN은 두 테이블에 있는 튜플들의 모든 순서쌍을 반환하는 조인이다.

 

EQUI JOIN

  • 공통 속성을 기준으로 '='(equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방법
  • NATURE JOIN : JOIN 조건이 '='일 때 동일한 속성이 두 번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법
  • EQUI JOIN에서 연결 고리가 되는 공통 속성을 JOIN 속성이라고 함

 

NON-EQUI JOIN

  • JOIN 조건에 '=' 조건이 아닌 나머지 비교 연산자('>', '<', '<>', '>=', '<=')를 사용하는 JOIN 방법

 

다음으로 OUTER JOIN이다. INNER JOIN은 공통된 튜플만 추출했다면 OUTER JOIN은 JOIN 조건에 만족하지 않는 튜플도 추출하기 위한 JOIN 방법이다. INNER JOIN + 기준이 되는 테이블의 튜플을 추출한다.

OUTER JOIN은 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 존재한다.

 

LEFT OUTER JOIN

  • INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가함
  • 조건문의 우측에 '+'를 사용하면 INNER JOIN과 동일한 형식으로 사용할 수 있음

 

RIGHT OUTER JOIN

  • INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가함
  • 조건문의 좌측에 '+'를 사용하면 INNER JOIN과 동일한 형식으로 사용할 수 있음

 

FULL OUTER JOIN

  • LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합쳐 놓은 것

 

마지막으로 SELF JOIN이다. SELF JOIN은 같은 테이블에서 2개의 속성을 연결하여 EQUI JOIN을 하는 JOIN 방법이다.

반응형

'Computer Science > 데이터베이스' 카테고리의 다른 글

NoSQL  (0) 2021.07.10
인덱스(Index)  (0) 2021.07.10
키(Key)의 종류  (0) 2021.07.09
SQL의 분류와 사용법  (0) 2021.07.09
트랜잭션(Transaction)  (0) 2021.07.09

댓글