이 글에서 꼭 잡아야 할 것
SET 연산자는 여러 SELECT 결과를 집합처럼 합치거나 비교하는 문법이다. 결과 구조가 같아야 하며, 중복 제거 여부를 정확히 구분하는 것이 핵심이다.
서로 다른 조건으로 만든 결과를 하나로 모으고 싶을 때 SET 연산자가 빛난다. 예를 들어 국내 고객과 해외 고객 목록을 나눠 조회한 뒤 하나로 합치는 식이다. 이때 조인과 SET 연산자를 혼동하지 않는 것이 중요하다.
개념 지도와 이해 포인트
대표 문법 패턴
SELECT department_id
FROM employees
UNION
SELECT department_id
FROM departments;
SELECT employee_id
FROM employees_2025
MINUS
SELECT employee_id
FROM employees_2024;
문법 읽는 포인트
- SET 연산자 양쪽 SELECT는 컬럼 개수와 순서가 맞아야 한다.
- `UNION ALL`은 중복 제거를 하지 않아 더 빠를 수 있다.
- 차집합은 순서가 바뀌면 결과 의미가 달라진다.
핵심 용어
- UNION
- INTERSECT
- MINUS
올해와 작년 직원 목록 비교하기
SET 연산자는 두 결과를 각각 완성한 뒤 마지막에 조합한다고 생각하면 읽기 쉽다. 각 SELECT를 따로 검증한 뒤 합치는 습관을 들이면 오류도 크게 줄어든다.
SELECT employee_id
FROM current_staff
MINUS
SELECT employee_id
FROM previous_staff;
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- `UNION`과 `UNION ALL` 차이는 중복 제거 여부가 핵심이다.
- SET 연산자는 ORDER BY를 전체 결과 마지막에 한 번만 쓰는 패턴을 자주 본다.
- INTERSECT와 MINUS는 집합 연산 이미지로 기억하면 안정적이다.
자주 하는 실수
- 양쪽 SELECT 컬럼 구성이 다르면서 그대로 결합하려는 실수
- `UNION ALL`이 자동으로 중복을 제거한다고 오해하는 실수
- MINUS의 방향을 반대로 읽는 실수
연결 학습
결과 집합을 합치는 감각이 생겼다면, 행 안의 값을 조건에 따라 바꾸는 CASE와 DECODE를 익힐 차례다. 다음 챕터에서 분기 문법을 정리한다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
서브쿼리 기본: 단일행 서브쿼리 읽는 법
서브쿼리는 하나의 질의 안에서 다른 질의를 이용하는 문법이다. 먼저 한 값을 구하고, 그 값을 바탕으로 바깥 질의를 실행하는 단일행 서브쿼리부터 이해하면 전체 구조가 쉬워진다.
다중행 서브쿼리와 IN, ANY, ALL
서브쿼리 결과가 여러 행이 되는 순간 비교 연산자 선택이 달라진다. IN, ANY, ALL을 정확히 구분하면 다중행 서브쿼리 문제를 안정적으로 풀 수 있다.
상호연관 서브쿼리와 EXISTS
상호연관 서브쿼리는 바깥 질의의 각 행이 안쪽 질의에 영향을 준다. EXISTS와 함께 익히면 “관련 데이터가 있는가”를 검사하는 문제를 매우 자연스럽게 풀 수 있다.
CASE와 DECODE로 조건 분기하기
조건 분기는 데이터를 사람이 읽기 좋은 형태로 바꾸는 핵심 기술이다. 표준 SQL의 CASE와 오라클 고유 함수 DECODE를 함께 익히면 문제 해석 폭이 넓어진다.
분석 함수 기초: OVER와 PARTITION BY
분석 함수는 행을 줄이지 않고도 집계 결과를 각 행에 함께 보여준다. OVER 절과 PARTITION BY를 이해하면 집계와 분석의 차이가 선명해진다.
댓글을 불러오는 중입니다.