본문 바로가기

데이터베이스/SQL & PL/SQL

[SQL] SET 연산자에 대해서 알아보자, 우선 배경지식!


SET 연산자에 대해서 우리는 초중고 때 배웠던 집합의 개념을 다시 떠올려 볼 수 있습니다.
사실 초등학교때 배웠는지는 기억이 안나는데요. ^^;
집합의 개념만 잡고 있다면 SET연산자에 대해서 이해가 더 잘 될 겁니다.

SET 연산자에서 다룰 내용은요 UNION, UNION ALL, INTERSECT, MINUS 입니다.
UNION 들합집합에 해당되는 내용이겠구요.
INTERSECT교집합, 그리고 MINUS차집합이 되겟습니다.

우선 혹시나 합집합에 대해서 모르시는 분들을 위해서 잠시 수학의 시간으로 돌아가볼게요 ^^

합집합은 두개의 집합의 합, 표현식으로는 A∪B 으로 나타낼 수 있겠는데요.
두개의 집합이 합쳐질때 공통요소는 한번만 포함이 됩니다.
즉 예로, A 집합에는 1~5까지의 수가 존재하구요, B 집합에는 4~10 까지 존재한다고 한다면
A와 B의 합집합, AB 는 1~10까지 로 구성되고 여기서 공통요소인 4와 5는 한번만 포함이 됩니다. 
다음을 참고 하시면 되겠습니다.
A={1,2,3,4,5}                  →     AB = {1,2,3,4,5,6,7,8,9,10}        - UNION 에 해당
B={4,5,6,7,8,9,10}                    AB = {1,2,3,4,5,4,5 6,7,8,9,10}   - UNION ALL 에 해당
위에것이 UNION 에 해당되는 내용이겠구요.
UNION ALL은 UNION과는 다르게  공통요소들을 제거를 하지않고 중복해서 포함을 해버립니다.

교집합은 두개의 집합의 공통요소만 추려냅니다. 표현식으로는 A∩B 으로 나타낼 수 있습니다.
다음과 같이 교집합을 이해하시면 되겠습니다.
A={1,2,3,4,5}                   → AB = {4,5}
B={4,5,6,7,8,9,10}
이 교집합은 INTERSECT에 해당되는 내용입니다.

그리고 마지막으로 차집합은 두개의 집합에서 공통된 요소들을 빼버리는 겁니다.
이때, 연산자가 기준이 되구요, 피연산자와의 공통요소들만 제외된 집합을 나타냅니다.
즉, 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에 해당되는 내용입니다.

이상, SET연산자를 알아보기전에 알아야할 간단한 수학 상식이였습니다.


도움 되셨다면 댓글 부탁드립니다.