티스토리 뷰

데이터베이스/MySQL

INNER JOIN과 OUTER JOIN

토마's 2017. 12. 23. 17:03

안녕하세요. 오늘은 테이블 결합에 대해서 포스팅하려고 합니다. 테이블 결합에는 크게 '내부 결합'과 '외부 결합'이 있습니다.


1. 내부 결합( INNER JOIN )


두 테이블간의 조인 조건을 만족하는 행만 결과 값으로 반환합니다. 집합에서 예를 들면, 교집합이라고 간단하게 생각하시면 이해하기가 쉽습니다. 사용하는 방법은 아래와 같습니다.

SELECT * FROM 테이블 명1 INNER JOIN 테이블 명2 ON 결합조건

위의 구문을 보시면, INNER JOIN이 사용되었는데, 여기서 INNER는 '안쪽'이라는 의미이며, JOIN은 '연결시킨다'라는 의미입니다. 즉, 'INNER JOIN'은 내부결합이라는 의미가 됩니다. INNER JOIN에서는 ON을 사용하여 결합조건을을 지정합니다. 그럼 간단한 예제를 통해서 INNER JOIN에 대해 알아보겠습니다.



위의 결과를 확인해보시면, '상품2 테이블'과 '메이커 테이블'을 내부 결합하였으며, 조건으로는 상품 테이블의 메이커 코드와 메이커 테이블의 메이커 코드가 같은 것들을 상품 명, 메이커 명만 가져온 것을 확인해볼 수 있습니다.



2. 자기 결합(Self Join)


자기 결합은 테이블에 별명을 붙일 수 있는 기능을 이용해 같은 테이블끼리 결합하는 것을 말합니다. 특별히, 명령어가 정해져 있는 것은 아니고 이해를 돕기 위해 다음과 같이 간단한 예제를 통해 확인해보겠습니다.


위의 결과를 확인해보면 같은 테이블 두 개를 조인해서 결과를 가져온 것을 볼 수 있습니다.



3. 외부 결합(OUTER JOIN)


외부 결합도 교차결합으로 결합 조건을 지정하여 검색한다는 기본적인 사고 방식은 같습니다. 외부 결합은 '어느 한쪽에만 존재하는 데이터행을 어떻게 다룰지'를 변경할 수 있는 결합 방법입니다. 사용 방법은 아래와 같습니다.

SELECT * FROM 테이블 명1 [ LEFT | RIGHT ]OUTER JOIN 테이블 명2 ON 결합조건


위의 구문을 간단한 예제를 통해 알아보도록 하겠습니다.


위의 결과를 확인해보시면 LEFT OUTER JOIN을 사용해서 '상품3 테이블'을 기준으로 잡았으며, 상품3 테이블의 상품코드와 재고수 테이블의 상품코드가 일치하는 것, 그리고 상품3 테이블의 상품분류가 식료품인 것의 상품명 및 재고수를 가져오는 것을 확인해 볼 수 있습니다. 위의 문법에서 LEFT 또는 RIGHT를 사용하는 것에 따라 왼쪽 테이블이 기준이되는지 오른쪽 테이블이 기준이 되는지 선택할 수 있습니다. 


그럼 이상으로 INNER JOIN 및 OUTER JOIN에 대한 포스팅을 마치도록 하겠습니다. : )