목차
1. Table JOIN이란?
2. JOIN
2.1 Inner JOIN
2.2 Outer JOIN
1. Table JOIN이란?
Table JOIN이란 복수의 테이블을 결합하는 것으로, 데이터 조회 시 다른 테이블의 데이터를 함께 조회해야할 때 이용한다.
2. JOIN
JOIN은 크게 Inner Join과 Outer Join으로 나뉜다.
2.1 Inner JOIN
Join에 대해 얘기할 때는 보통 Inner Join을 지칭하는데, 테이블 데이터 간 교집합을 말한다고 생각하면 된다.
위 그림을 보면 Table A는 상품을 관리하는 테이블이며, Table B는 상품에 대한 재고를 관리하는 테이블이다. 저 정도의 데이터는 한 테이블에서 관리해도 되지만 이해를 위해 각 테이블에 훨씬 많은 컬럼들이 존재한다고 가정해보자.
Join은 테이블을 결합하는 것이고, Inner Join은 교집합이다. 각 테이블을 살펴보면 상품코드라는 컬럼을 공통으로 가지고 있고 이를 결합 조건으로 하여 아래와 같은 쿼리문을 작성할 수 있다.
SELECT A.상품코드, B.상품명, B.재고수량
From TableA
INNER JOIN TableB
ON A.상품코드 = B.상품코드
결합을 할 때의 조건은 ON 이하에 명시해주면 된다. 이때 Where절을 이용하여 특정 데이터만 골라낸다면 다음과 같이 작성해주면 된다.
SELECT A.상품코드, A.상품명, B.재고수량
FROM TableA
INNER JOIN TableB
ON A.상품코드 = B.상품코드
Where A.상품코드 = 1
Table Join에 대한 조건은 ON, 데이터 필터링에 대한 조건은 Where을 사용한다.
~를 기준으로 테이블을 묶고 싶다 => ON
~한 데이터만 보고싶다 => Where
기억하자!!
2.2 Outer JOIN
Outer JOIN은 조인하는 여러 테이블에서 한 쪽에는 데이터가 있고, 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 테이블의 내용을 모두 출력하는 것이다. 즉, 조건에 맞지 않아도 해당하는 행을 출력하고 싶을 때 사용할 수 있다.
Outer JOIN의 종류로는 Left Outer JOIN과 Right Outer JOIN, Full Outer JOIN가 있다.
- Left Outer JOIN : 조인문의 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시한다.
SELECT A.상품코드, A.상품명, B.재고수량
FROM TableA
LEFT JOIN TableB
ON A.상품코드 = B.상품코드
- Right Outer JOIN : 조인문의 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽의 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없는 경우 NULL로 표시한다.
SELECT A.상품코드, A.상품명, B.재고수량
FROM TableA
RIGHT JOIN TableB
ON A.상품코드 = B.상품코드
- Full Outer JOIN : Left Outer JOIN과 Right Outer JOIN을 합친 것으로, 양쪽 모두 조건이 일치하지 않는 것까지 모두 결합해 출력한다.
SELECT A.상품코드, A.상품명, B.재고수량
FROM TableA
FULL JOIN TableB
ON A.상품코드 = B.상품코드
Mysql에서는 Full Outer JOIN이 없으므로, Left Outer JOIN과 Right Outer JOIN을 Union 하는 식으로 하여 Full Outer JOIN을 만들어준다.
보통 내부 조인을 많이 사용하며 외부 조인 중에는 Left Outer JOIN을 많이 사용한다. 데이터 조회 시 한 테이블에 대한 조회보다 다른 테이블을 함께 조회하는 경우가 많으니 조인에 대해 확실히 이해를 해두면 쉽게 원하는 데이터를 추출할 수 있다.
'DB' 카테고리의 다른 글
정규화에 대해 알아보자. (0) | 2024.03.30 |
---|