집합 연산자는 여러 개의 SELECT 문을 결합하여 단일 결과 집합을 만드는 데 사용됩니다. SQLD 시험에서는 각 연산자의 차이점, 특히 중복 처리 방식과 성능에 대한 문제가 자주 출제됩니다.
SELECT 문의 결과를 **세로(수직)**로 결합합니다.SELECT 절의 컬럼 수가 동일해야 합니다.| 연산자 | 설명 | 중복 처리 | 성능 |
|---|---|---|---|
UNION | 합집합 | 중복 제거 | 느림 |
UNION ALL | 합집합 | 중복 허용 | 가장 빠름 |
INTERSECT | 교집합 | 중복 제거 | 느림 |
MINUS | 차집합 | 중복 제거 | 느림 |
UNION (합집합 - 중복 제거)UNION은 두 SELECT 결과의 모든 행을 합치고, 중복된 행은 제거합니다.UNION ALL보다 느립니다.UNION이 정답입니다.UNION ALL (합집합 - 중복 허용)UNION ALL은 두 SELECT 결과의 모든 행을 단순히 합칩니다. 중복된 행이 있어도 그대로 유지됩니다.INTERSECT (교집합)INTERSECT는 두 SELECT 결과에 모두 존재하는 행만 반환합니다.INTERSECT를 떠올려야 합니다.MINUS (차집합)MINUS는 첫 번째 SELECT 결과에서 두 번째 SELECT 결과에 존재하는 행을 제외하고 반환합니다.MINUS, **ANSI 표준은 EXCEPT**를 사용합니다.UNION vs UNION ALL: 중복 제거 여부에 따라 성능이 달라집니다.INTERSECT: 두 집합의 교집합을 구합니다.MINUS (Oracle) / EXCEPT (ANSI): 차집합을 구합니다.ORDER BY 절은 가장 마지막 SELECT 문에만 사용할 수 있으며, 전체 결과를 대상으로 정렬합니다.UNION → **유니크(Unique)**하게 중복 제거!UNION ALL → 올(All) 다 모아, 중복도 다 포함!INTERSECT → In-tersect = 두 집합에 In (존재)하는 것만!MINUS / EXCEPT → 빼기!1. 다음 연산자에 대한 설명으로 옳지 않은 것은?
① UNION은 중복을 제거한다.
② UNION ALL은 중복을 제거한다.
③ INTERSECT는 교집합을 구한다.
④ MINUS는 차집합을 구한다.
2. 성능상 가장 빠른 집합 연산자는?
① UNION
② UNION ALL
③ INTERSECT
④ MINUS
3. 다음 SQL의 실행 결과를 고르시오.
SELECT 'A' AS val
UNION ALL
SELECT 'A';
① A
② A, A
③ 에러 발생
④ NULL
4. Oracle에서는 차집합을 표현할 때 사용하는 연산자는?
① EXCEPT
② MINUS
③ DIFFERENCE
④ OUTER JOIN
UNION ALL은 중복을 제거하지 않습니다. 중복을 제거하는 것은 UNION입니다.UNION ALL은 중복 검사 과정이 없어 가장 빠르고 효율적인 연산자입니다.UNION ALL은 중복된 값도 모두 포함하여 결과를 반환합니다. 따라서 'A'가 두 번 출력됩니다.MINUS입니다. EXCEPT는 ANSI 표준으로 MySQL 등에서 사용됩니다.