JOIN를 이용해 여러 테이블을 하나의 테이블 또는 결과 집합으로 표현하기


1. JOIN

JOIN은 데이터베이스 내의 여러 테이블을 조합해 하나의 테이블 또는 결과 집합으로 표현해 준다. JOIN의 기본 문법은 다음과 같다.

-- JOIN의 기본 문법
table1
JOIN table2
ON condition


관계형 데이터베이스에서 JOIN의 필요성
관계형 데이터베이스에는 관계있는 데이터가 여러 테이블로 나누어 저장되어있는데, JOIN을 통해 각 테이블에 저장된 데이터를 효과적으로 검색할 수 있다.
cf. 관계형 데이터베이스(RDB)는 테이블, 행, 열의 정보를 구조화하는 방식으로 RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 있는 기능이 있다.

조합 방식에 따른 JOIN 종류 JOIN

(1) 교집합(INNER)

-- INNER JOIN 기본 문법
table1
INNER JOIN table2 ON table1.컬럼 = table2.컬럼

(2) 부분집합(LEFT/RIGHT)

-- LEFT JOIN 기본 문법
table1
LEFT JOIN table2 ON table1.컬럼 = table2.컬럼

-- RIGHT JOIN 기본 문법
table1
RIGHT JOIN table2 ON table1.컬럼 = table2.컬럼

(3) 합집합(OUTER)

Oracle에는 OUTER JOIN 연산이 있지만, MySQL은 지원하지 않는다. MySQL에서는 LEFT JOIN한 결과와 RIGHT JOIN한 결과를 UNION으로 묶어주면 같은 결과를 출력할 수 있다.

-- 합집합을 위한 기본 문법
SELECT 특정 필드
FROM table1
LEFT JOIN table2 ON table1.필드 = table2.필드

UNION

SELECT 특정 필드
FROM table1
RIGHT JOIN table2 ON table1.필드 = table2.필드

LEFT JOIN한 결과와 RIGHT JOIN한 결과를 붙인다면 교집합이 한번 더 포함되는거 아닌가? 라는 생각이 들 수 있다. 하지만 UNION은 중복된 행이 존재하면 중복을 제거한 결과를 보여주기 때문에 따로 교집합 부분의 데이터를 빼줄 필요가 없다.

cf. UNION 대신 UNION ALL을 사용하면 중복된 행을 하나의 값으로 대표하지 않고 같은 행이 여러 개 존재해도 중복제거 없이 다 출력한다.


2. Reference


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

태그:

카테고리:

업데이트:

댓글남기기