SET 연산자에 대해서 우리는 초중고 때 배웠던 집합의 개념을 다시 떠올려 볼 수 있습니다.
사실 초등학교때 배웠는지는 기억이 안나는데요. ^^;
집합의 개념만 잡고 있다면 SET연산자에 대해서 이해가 더 잘 될 겁니다.
SET 연산자에서 다룰 내용은요 UNION, UNION ALL, INTERSECT, MINUS 입니다.
UNION 들은 합집합에 해당되는 내용이겠구요.
INTERSECT는 교집합, 그리고 MINUS는 차집합이 되겟습니다.
우선 혹시나 합집합에 대해서 모르시는 분들을 위해서 잠시 수학의 시간으로 돌아가볼게요 ^^
합집합은 두개의 집합의 합, 표현식으로는 A∪B 으로 나타낼 수 있겠는데요.
두개의 집합이 합쳐질때 공통요소는 한번만 포함이 됩니다.
즉 예로, A 집합에는 1~5까지의 수가 존재하구요, B 집합에는 4~10 까지 존재한다고 한다면
A와 B의 합집합, A∪B 는 1~10까지 로 구성되고 여기서 공통요소인 4와 5는 한번만 포함이 됩니다.
다음을 참고 하시면 되겠습니다.
A={1,2,3,4,5} → A∪B = {1,2,3,4,5,6,7,8,9,10} - UNION 에 해당
B={4,5,6,7,8,9,10} A∪B = {1,2,3,4,5,4,5 6,7,8,9,10} - UNION ALL 에 해당
위에것이 UNION 에 해당되는 내용이겠구요.B={4,5,6,7,8,9,10} A∪B = {1,2,3,4,5,4,5 6,7,8,9,10} - UNION ALL 에 해당
UNION ALL은 UNION과는 다르게 공통요소들을 제거를 하지않고 중복해서 포함을 해버립니다.
교집합은 두개의 집합의 공통요소만 추려냅니다. 표현식으로는 A∩B 으로 나타낼 수 있습니다.
다음과 같이 교집합을 이해하시면 되겠습니다.
A={1,2,3,4,5} → A∪B = {4,5}
B={4,5,6,7,8,9,10}
이 교집합은 INTERSECT에 해당되는 내용입니다.B={4,5,6,7,8,9,10}
그리고 마지막으로 차집합은 두개의 집합에서 공통된 요소들을 빼버리는 겁니다.
이때, 연산자가 기준이 되구요, 피연산자와의 공통요소들만 제외된 집합을 나타냅니다.
즉, A-B와 B-A는 결과가 다른데요.
A-B의 경우는 A가 기준이 되어 B와의 공통요소들만 없앤것이고
B-A의 경우는 B가 기준이 되어 A와의 공통요소들만 없앤것입니다.
다음과 같이 차집합을 이해하시면 되겠습니다.
A={1,2,3,4,5} → A-B = {1,2,3}
B={4,5,6,7,8,9,10} B-A = {6,7,8,9,10}
마지막인 차집합은 MINUS에 해당되는 내용입니다.B={4,5,6,7,8,9,10} B-A = {6,7,8,9,10}
이상, SET연산자를 알아보기전에 알아야할 간단한 수학 상식이였습니다.
도움 되셨다면 댓글 부탁드립니다.
'데이터베이스 > SQL & PL/SQL' 카테고리의 다른 글
[SQL] SET 연산자에 대해서 알아보자, INTERSECT, MINUS! (0) | 2011.08.02 |
---|---|
[SQL] SET 연산자에 대해서 알아보자, UNION(ALL)! (0) | 2011.08.02 |
[SQL] WHERE 절을 활용하자, NULL! (0) | 2011.07.30 |
[SQL] WHERE 절을 활용하자, LIKE! (0) | 2011.07.30 |
[SQL] WHERE 절을 활용하자, EXISTS! (2) | 2011.07.30 |