본문 바로가기
OFFICE TOOL/MSSQL

MSSQL JOIN 종류와 사용방법(엑셀 VLOOKUP 기능의 JOIN)

by 엘런브로 2022. 10. 21.

엑셀의 VLOOKUP과 같은 기능을 하는 함수가 MSSQL에서는 아마 JOIN이 아닐까 합니다. JOIN은 테이블 간 키값을 기준으로 데이터를 연결하는 기능을 하는 것은 잘 알고 있을 것입니다. JOIN에는 크게 INNER JOIN과 OUTER JOIN으로 나눌 수 있습니다. 그중에 가장 많이 사용되는 INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN 3가지 방법에 대해서 하나씩 알아보겠습니다.

JOIN 종류와 사용 방법
1. INNER JOIN
2. LEFT OUTER JOIN
3. RIGHT OUTER JOIN
4. FULL OUTER JOIN(사용빈도 낮음)
5. CROSS JOIN(사용빈도 낮음)

 

1. INNER JOIN 

INNER JOIN 개념

INNER JOIN은 두개의 테이블에서 JOIN 하고자 하는 필드의 데이터가 두 테이블 모두 존재할 경우 해당 레코드만 표기되는 JOIN입니다. 

즉, 교집합 개념으로 보면 됩니다.

  • JOIN하고자 하는 필드 내 값이 두 테이블 모두 가지고 있는 레코드만 표기
  • 두 곳 중 한곳만 있는 테이블의 레코드는 표기하지 않음

INNER JOIN 개념 사진
INNER JOIN 개념도

 

INNER JOIN 구조

SELECT 테이블.필드명, 테이블.필드명 -- 순서는 무관합니다.
FROM 기준 테이블
INNER JOIN 조인할 테이블
            ON 기준 테이블. 필드명 = 조인할 테이블.필드명

 

[사용 예시]

자동차 구매를 위해 비교견적 리스트를 작성하고자 합니다. 자동차 종류별 가격이 있는 TABLE과 내가 사고 싶은 차량 비교를 위한 리스트 TABLE이 있다고 가정하겠습니다.

 

SQL TABLE 설명사진
SQL TABLE 설명사진


비교견적을 내기 위한 "구매 비교 리스트" TABLE과 국산차 전체 차량별 가격이 있는 "국산 차량 가격표" TABLE이 있습니다. 비교견적을 내기 위한 TABLE에는 가격이 없습니다. 그래서 [차량]-[차명]을 기준으로 구매 비교 리스트에 차량 가격이 나올 수 있도록 쿼리를 작성해보겠습니다.

SELECT 비교리스트.*, [국산 차량 가격표].[기준가액]
FROM [비교리스트]
INNER JOIN [국산 차량 가격표] ON [비교리스트].[차량] = [국산 차량 가격표].[차명]

 

[쿼리 결과]

INNER JOIN 결과 사진
INNER JOIN 결과

  • 기준 테이블인 [비교리스트]의 모든 필드와 조인할 테이블의 [기준가액]의 필드가 붙은 결과가 나옵니다.
  • INNER JOIN은 양측 조인 데이터가 존재하는 레코드만 불러오기 때문에 외제차량인 "AUDI A6 3.0" 레코드는 결괏값에 나타나지 않습니다.

 

INNER JOIN 결과 구조도 사진
INNER JOIN 결과 구조도

 

2. LEFT OUTER JOIN 

LEFT OUTER JOIN 개념

LEFT OUTER JOIN은 두 개의 테이블에서 좌측 테이블(기준 테이블)을 기준으로 좌측 테이블은 모두 표기하고 우측 테이블(조인 테이블)은 기준 테이블에 존재하는 값만을 표기합니다.  

엑셀의 VLOOKUP과 동일한 기능입니다.

 

  • 좌측 테이블(기준 테이블)의 모든 레코드는 표기합니다.
  • 우측 테이블(조인 테이블)은 기준 테이블에 존재하는 레코드만 표기합니다.

LEFT OUTER JOIN 개념도

 

LEFT OUTER JOIN 구조

SELECT 테이블.필드명, 테이블.필드명 -- 순서는 무관합니다.
FROM 기준 테이블
LEFT OUTER JOIN 조인할 테이블
            ON 기준 테이블.필드명= 조인할 테이블.필드명

 

[사용 예시]

구매하고자 하는 차량의 모든 리스트에 차량 가격을 기입한 결과물을 확인하는 쿼리입니다.

SELECT 비교 리스트.*, [국산 차량 가격표].[기준가액]
FROM [비교리스트]
LEFT OUTER JOIN [국산 차량 가격표] ON [비교리스트].[차량] = [국산 차량 가격표].[차명]

 

[쿼리 결과]

LEFT OUTER JOIN 결과 사진
LEFT OUTER JOIN 결과

 

  • 기준 테이블인 [비교리스트]의 모든 레코드가 표기되고 조인 테이블에 부합되는 레코드에는 "기준가액"이 표기됩니다.
  • 부합되는 레코드가 없는 경우 "기준가액"의 값은 NULL 표기됩니다.

 

LEFT OUTER JOIN 결과 구조도

 

3. RIGHT OUTER JOIN 

RIGHT OUTER JOIN 개념

RIGHT OUTER JOIN은 LEFT OUTER JOIN과 정반대 되는 구조입니다.

두 개의 테이블에서 우측 테이블(조인 테이블)을 기준으로 우측 테이블은 모두 표기하고 좌측 테이블(기준 테이블)은 조인 테이블에 존재하는 값만을 표기합니다.  

 

  • 우측 테이블(조인 테이블)의 모든 레코드는 표기합니다.
  • 좌측 테이블(기준 테이블)은 조인 테이블에 존재하는 레코드만 표기합니다.

RIGHT OUTER JOIN 구조도 사진
RIGHT OUTER JOIN 구조도 사진

 

RIGHT OUTER JOIN 구조

SELECT 테이블.필드명, 테이블.필드명 -- 순서는 무관합니다.
FROM 기준테이블
RIGHT OUTER JOIN 조인할 테이블
            ON 기준테이블.필드명 = 조인할 테이블.필드명

 

[사용 예시]

국산 차량 가격표 테이블 전체 레코드가 표기되고 비교 리스트에 존재하는 값만 넣어서 표기됩니다.

SELECT 비교리스트.*, [국산 차량 가격표].[기준가액]
FROM [비교리스트]
RIGHT OUTER JOIN [국산 차량 가격표] ON [비교리스트].[차량] = [국산 차량 가격표].[차명]

 

[쿼리 결과]

RIGHT OUTER JOIN 결과 사진
RIGHT OUTER JOIN 결과

 

  • 조인 테이블인 [국산 차량 가격표]의 모든 레코드가 표기되고 기준 테이블에 부합되는 레코드에는 "제조사", "차량", "색상"이 표기됩니다.
  • 부합되는 레코드가 없는 경우 "제조사", "차량", "색상"의 값은 NULL 표기됩니다.

 

RIGHT OUTER JOIN 구조도 사진
RIGHT OUTER JOIN 구조도

 


이상으로 JOIN에서 가장 많이 사용되는 3가지에 대해서 알아보았습니다. 

그 외 FULL OUTER JOIN과 CROSS JOIN이 있습니다만, 빈도수가 그리 많지 않기에 간단히 개념만 알고 넘어가면 될 것 같습니다.

 

FULL OUTER JOIN 

  • 기준 테이블과 조인 테이블의 모든 레코드가 표기됩니다. JOIN 값이 있으면 표기되고 없으면 NULL값으로 표기됩니다.
  • 합집합 개념으로 이해하시면 됩니다.

CROSS JOIN 

  • 기준 테이블과 조인 테이블 간의 모든 레코드를 곱해서 표기합니다. 
  • 결과 레코드의 크기 = 기준 테이블 레코드 수 x 조인 테이블 레코드 수

 

다양한 JOIN 방법이 있지만 INNER JOIN과 OUTER JOIN 2가지 총 3가지 JOIN방법만 알고 있으면 될 것 같습니다.

업무에 많은 도움이 되기를 바랍니다.

반응형

댓글