[Study 5] 데이터의 결합 2 (OUTER JOIN)
OUTER JOIN을 그대로 번역 하면 "외부 조인" 정도 인데, INNER JOIN 과 마찬가지로 "외부" 와 "내부" 라는 뜻을 알기가 참 힘들다.
INNER JOIN은 교집합을 의미 한다고 했다. 그럼 OUTER JOIN은 집합의 개념을 생각 했을 때 무엇을 의미 하는지 알아 보자.
OUTER JOIN은 집합연산에서 교집합, 합집합, 차집합 등의 연산이다라고 표현 하기가 힘들지만 한가지 확실한 것은 OUTER JOIN이 집합 개념에서 차집합을 의미하는 것이 아니라는 것은 분명 하다.
차집합은 A - B 이다. A - B 는 A 집합에서 B 집합에 있는 요소들을 모두 뺀 나머지 이고, 이는 A - (A ∩ B)라고 표현 할 수도 있다.
하지만 OUTER JOIN은 오히려 INNER JOIN을 조금 더 확장한 연산이라고 생각하는 것이 좋다. 교집합 (A ∩ B) 이외의 요소들을 결과 집합에 포함하고자 한다면, 예를 들어 A_Table 과 B_Table을 INNER JOIN한 결과에서 A_Table이나 B_Table 또는 두 Table 모두, 연산에서 빠진 결과들을 결과 집합에 붙이고자 할때 OUTER JOIN을 사용 한다.
OUTER JOIN에는 LEFT, RIGHT, FULL OUTER JOIN 등 3가지 형식이 있고 그림으로 표현 하면 다음과 같다.
LEFT OUTER JOIN
RIGHT OUTER JOIN
이상으로 LEFT OUTER JOIN 과 RIGHT OUTER JOIN 의 예를 살펴 보면 다음과 같다.
CREATE TABLE SET_A(ID INT)
GO
CREATE TABLE SET_B(ID INT)
GO
BEGIN
INSERT SET_A VALUES(1)
INSERT SET_A VALUES(2)
INSERT SET_A VALUES(3)
INSERT SET_B VALUES(2)
INSERT SET_B VALUES(3)
INSERT SET_B VALUES(4)
END
-- 1. LEFT OUTER JOIN
SELECT A.ID AS AID, B.ID AS BID
FROM SET_A A LEFT OUTER JOIN SET_B B
ON A.ID = B.ID
-- 2. RIGHT OUTER JOIN
SELECT A.ID AS AID, B.ID AS BID
FROM SET_A A RIGHT OUTER JOIN SET_B B
ON A.ID = B.ID
각각의 결과는 다음과 같다.
-- 1. LEFT OUTER JOIN
결과를 보면 SET_B TABLE(집합)에 포함되어 있지 않은 요소 1 이 결과 집합에 포함 되어 있는 것을 볼 수 있다.
-- 2. RIGHT OUTER JOIN
결과를 보면 SET_A TABLE(집합)에 포함되어 있지 않은 요소 4 가 결과 집합에 포함 되어 있는 것을 볼 수 있다.
'SQL' 카테고리의 다른 글
| [Study 6] 시스템 제공 함수 사용 방법 (0) | 2010/04/13 |
|---|---|
| [Study 5] 데이터의 결합 2 (OUTER JOIN) (0) | 2010/03/23 |
| [Study 4] 데이터의 결합 1. (INNER JOIN) (0) | 2010/03/23 |
| [Study 3] GROUP BY 와 DISTINCT 연산 (0) | 2010/02/24 |
| [Study 2] 내장 함수 CONVERT 사용 방법 (0) | 2010/02/24 |
| [Study 1] SELECT ~ INTO 사용 방법 (0) | 2010/02/24 |
