현재 선택한 정보처리 과정

정보처리기사 실기 이론 학습

이론 목록으로 돌아가기

조인·집합 연산

조인은 매칭되는 행 쌍을 만들고 집합 연산은 결과 행들을 합친다.

예상 읽기 3

실기 학습 목표

조인은 매칭되는 행 쌍을 만들고 집합 연산은 결과 행들을 합친다.

핵심 이론

INNER JOIN은 조건에 맞는 행 쌍만 남긴다. 한 행에 상대편 두 행이 매칭되면 결과도 두 행이다. CROSS JOIN의 행 수는 두 행 수의 곱이다.

LEFT JOIN은 왼쪽 미매칭 행도 오른쪽 NULL로 확장해 남긴다. 오른쪽 조건을 ON에 두는 것과 WHERE에 두는 것은 결과가 다를 수 있다.

UNION은 중복 제거, UNION ALL은 중복 유지, INTERSECT는 공통 행, EXCEPT는 왼쪽에만 있는 행이다. Oracle의 MINUS 등 방언 차이는 문제 조건에 맞춘다.

집합 연산은 대응 열 수·타입이 호환되어야 한다. 먼저 각 SELECT 결과를 계산하고 중복 처리 규칙을 적용한 뒤 최종 ORDER BY를 적용한다.

개념 도식

좌우로 이동해 그림을 확인하세요.그림 크게 보기
조인·집합 연산의 관계와 흐름을 보여 주는 도식
조인·집합 연산의 관계와 흐름을 보여 주는 도식

조인 결과는 조건을 만족하는 행 쌍의 목록이다

왼쪽 키 A가 2행, 오른쪽 키 A가 3행이면 해당 키의 동등 조인 결과는 2×3=6행이다. 조인 뒤의 COUNT나 SUM은 이 결과 행을 대상으로 한다. 원본 한쪽 표만 세면 집계가 달라진다.

LEFT JOIN은 연결 상대가 없는 왼쪽 행도 남기고 오른쪽 열을 NULL로 채운다. 직원 1에게 수당 두 건, 직원 2에게 수당이 없다면 조인 후 직원 1은 두 행, 직원 2는 NULL이 붙은 한 행이다. COUNT(*)는 직원 2의 행도 세지만 COUNT(수당의 비NULL 키)는 0이다.

연산중복 처리확인할 점
UNION ALL두 결과를 그대로 이어 붙임합친 전체 행 수
UNION같은 결과 행 제거모든 열이 같은 행인지
CROSS JOIN모든 행 쌍왼쪽 행 수 × 오른쪽 행 수

풀이에서는 조인표를 만든 뒤 필터·집계·정렬을 적용한다. OUTER JOIN 뒤 WHERE에서 오른쪽 열의 값만 요구하면 NULL 확장 행이 제외될 수 있다. ON 조건에서 상대를 고르는 것과 WHERE에서 완성된 행을 거르는 것을 구별한다. 실행계획 튜닝이나 조인 알고리즘 구현까지 다루지는 않는다.

풀이 예시

아래 테이블에 대해 SQL을 실행한 결과를 열의 순서대로 쓰시오. NULL은 NULL로 표기한다.

[A]

n
1
1
4

[B]

n
1
3

[실행할 SQL]

SQL코드 영역 안에서 좌우로 이동할 수 있습니다.
SELECT (SELECT COUNT(*) FROM (SELECT n FROM A UNION SELECT n FROM B)) AS u, (SELECT COUNT(*) FROM (SELECT n FROM A UNION ALL SELECT n FROM B)) AS ua;

예시 정답

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
3 | 5

풀이 과정

UNION은 두 입력의 중복을 없애 {1,3,4}의 세 행이다. UNION ALL은 첫 테이블의 세 행과 둘째의 두 행을 모두 남겨 다섯 행이다.

답안 점검

위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.