STUDY/SQL
[SQL] 집합연산
devmel
2026. 7. 30. 10:48
개념
컬럼 구성이 같은 여러 SELECT문의 결과 행을 하나의 결과로 합치거나 비교하는 연산
문법
SELECT
컬럼1 AS 결과_컬럼1,
컬럼2 AS 결과_컬럼2,
...
FROM 첫_번째_테이블
[WHERE 조건]
집합_연산자
SELECT
컬럼1,
컬럼2,
...
FROM 두_번째_테이블
[WHERE 조건]
[ORDER BY 결과_컬럼1] -- 전체 정렬시, 마지막 SELECT문에 ORDER BY를 한 번 작성
;
-- 최종 결과의 컬럼명 => 일반적으로 첫 번째 SELECT문의 컬럼명이나 별칭을 사용함
-- 결과_컬럼1
-- 결과_컬럼2
종류
| 연산자 | 결과 |
| UNION | 두 결과를 합치고 중복 행 제거 |
| UNION ALL | 두 결과를 합치고 중복 행 유지 |
| INTERSECT | 두 결과에 공통으로 존재하는 행 |
| EXCEPT | 첫 번째 결과에만 존재하는 행 |
사용조건
각 SELECT문은 반환하는 결과 구조가 서로 맞아야 함
- 컬럼 개수가 맞아야 함
- 컬럼 순서가 맞아야 함 : 컬럼 이름이 같은 필요는 없지만, 각 위치의 의미와 자료형은 맞춰야 함
- 자료형이 호환되어야 함 : 같은 위치에 있는 컬럼은 서로 비교하거나 결합할 수 있어야 함
- 필요하다면 자료형 직접 변환 : CAST(컬럼 AS 변환할_자료형) AS 결과컬럼