본문 바로가기
Database/DB이론

[SQL] JOIN정리 - INNER JOIN, OUTER JOIN, CROSS JOIN, FULL JOIN

by Ratataca 2022. 3. 11.

일반적으로 관계형 데이터베이스란 키(Key)와 값(Value)들의 관계를 테이블화 시킨 간단한 원칙의 데이터베이스를 말한다.

이때 A 테이블과 B 테이블에 있는 정보들을 함께 출력하고 싶다면 어떻게 해야할까 ? 

두 개의 테이블을 이어서 원하는 결과를 출력해야 할 것이다.

이 때 필요한것이 JOIN이다. 

 


 

조인(JOIN) ? 

두 개 이상의 테이블을 곱한 결과 집합 이라고 간단히 MSDN에 정의되어있다.

 

JOIN에는 INNER JOIN OUTER JOIN 그리고 CROSS JOIN 이렇게 세가지 종류가 있으며, 실무에서는 대부분 INNER JOIN과  LEFT OUTER JOIN을 사용한다.

 

그림을 보며 하나씩 알아가 보자.

 

 

 

1. INNER JOIN

 

교집합의 결과를 출력해 준다고 생각해주면 쉽다.
그림과 같이 두 테이블의 조건에 모두 만족하는 데이터만 출력해 준다.

 

JOIN유형 생략시 기본적으로 INNER JOIN으로 들어가게 되며,

INNER JOIN시 LEFT,RIGHT같은 기준을 정해주지 않는데, INNER JOIN은 두 조건을 모두 만족하는 결과를 출력해주기 때문에 기준이 되는 테이블을 정해주지 않아도 되기 때문이다.

 

 

2. OUTER JOIN

1) LEFT OUTER JOIN


OUTER JOIN이 INNER JOIN과 다른점은 조건에 맞지 않는 데이터도 표시해 준다는 점이다.

 

LEFT JOIN 수행시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후 나중에 표기된 우측 테이블에서 JOIN대상 데이터를 읽어온다. 

즉 A테이블과 B테이블이 있을 때 A가 기준이 되어, A와 B를 비교한다음 B의 JOIN 컬럼에서 같은 값이 있을 때 해당 데이터를 가져오고 B의 JOIN컬럼에서 같은 값이 없는 경우에는 B테이블에서 가져오는 컬럼들은 NULL 값으로 채우는 것이다.

 

참고로 OUTER JOIN은 기본적으로 LEFT OUTER JOIN으로 명시되며, OUTER 키워드는 생략가능하다.

 

2) RIGHT OUTER JOIN

 

RIGHT JOIN은 LEFT JOIN과는 반대로 우측 테이블이 기준이 된다고 생각하면 된다.

 

3) FULL OUTER JOIN

 

JOIN 수행시 좌측과 우측의 모든 데이터를 읽고 JOIN 후 결과를 생성하며, 두 개의 테이블 모두가 기준이 된다.

합집합의 결과를 출력해준다고 생각하면 쉽다.

 

단 UNION ALL이 아닌 UNION 기능과 같으므로 중복 데이터는 삭제된다.

 

 

3. CROSS JOIN

 

 

CROSS JOIN은 상호 조인이라고도 불리며, 한 쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인시키는 기능을 한다.

그래서 CROSS JOIN의 결과 개수는 두 테이블의 행의 개수를 곱한 개수가 된다.

 

CROSS문은 모든 행에 대한 결합이 발생하기 때문에 ON구문을 사용할 수 없다.

예전에는 데이터에 대한 카피 후 연산이나 부분합을 구할 때 쓰였지만, 지금은 CUBE나 GROUPPING으로 대체되었고 현재는 잘 쓰지 않는다.

 


https://pyoungt.tistory.com/23

 

MSSQL JOIN 정리 : INNER JOIN, OUTER JOIN, CROSS JOIN

일반적으로 관계형 데이터베이스란 키(Key)와 값(Value)들의 관계를 테이블화 시킨 간단한 원칙의 데이터베이스를 말한다. 이때 A 테이블과 B 테이블에 있는 정보들을 함께 출력하고 싶다면 어떻게

pyoungt.tistory.com

 

'Database > DB이론' 카테고리의 다른 글

[SQL] OUTER JOIN의 (+) 기호란  (0) 2022.03.11
[SQL] Join(조인)의 종류와 특징  (0) 2022.03.09
[SQL] SUM, MAX, MIN 정리  (0) 2021.11.23
[SQL] SELECT문 ORDER BY 정리  (0) 2021.11.23

댓글