
데이터를 표기할 때, 두 개의 테이블에 자료를 하나로 합쳐서 표기해야 하는 경우들이 있다. 오늘은 그중에서 합집합과 관련된 함수인 UNION과 UNION ALL에 대해 확인하도록 하겠다.
Create Temp Table & Create Data
CREATE TABLE #tmp_math
(
cust_id int,
cust_name varchar(10),
math int
)
INSERT INTO #tmp_math VALUES (1,'홍길동',85)
INSERT INTO #tmp_math VALUES (2,'이순신',100)
CREATE TABLE #tmp_kr_lang
(
cust_id int,
cust_name varchar(10),
kr_lang int
)
INSERT INTO #tmp_kr_lang VALUES (1,'홍길동',100)
INSERT INTO #tmp_kr_lang VALUES (2,'이순신',95)
SELECT * FROM #tmp_math
SELECT * FROM #tmp_kr_lang

UNION
- UNION 연산은 두 개의 테이블을 하나로 만드는 연산이다.
- 두 개의 테이블의 컬럼 수, 컬럼의 데이터 형식 모두가 일치해야 가능하다.
- UNION 연산은 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거한다.
- UNION 은 정렬(sort) 과정을 발생시킨다.
SELECT * FROM #tmp_math
SELECT * FROM #tmp_kr_lang
SELECT math FROM #tmp_math
UNION
SELECT kr_lang FROM #tmp_kr_lang

위 UNION 의 설명대로 math 컬럼과 kr_lang 컬럼을 UNION을 이용하여 조회하면 보기와 같이 중복된 값을 제거함과 동시에 값을 자동으로 정렬처리하여 표기한다. math 컬럼과 kr_lang 컬럼은 서로 같은 int 형식이기에 조회가 가능하며, 서로 다른 컬럼형식을 사용했을 경우 오류가 발생하면서 조회가 처리되지 않는다.

UNION ALL
- 두 개의테이블을 하나로 합치는 것이다.
- UNION처럼 중복을 제거하거나 정렬을 유발하지 않는다.
SELECT * FROM #tmp_math
SELECT * FROM #tmp_kr_lang
SELECT math FROM #tmp_math
UNION ALL
SELECT kr_lang FROM #tmp_kr_lang

위 UNION ALL의 설명대로 math 컬럼과 kr_lang 컬럼을 UNION ALL을 이용하여 조회하면 보기와 같이 중복 제외나 정렬을 유발하지 않고, SELECT 하고자 하는 컬럼값의 값을 모두 표기하는 것을 확인할 수 있다. 다만 UNION과 마찬가지로 컬럼 형식이 다른 값을 UNION ALL을 하여 처리하고자 할 때에는 동일한 오류가 발생한다.
'데이터베이스[DB] > MSSQL' 카테고리의 다른 글
[MS-SQL] DELETE, DROP, TRUNCATE (0) | 2025.04.06 |
---|---|
[MS-SQL] LEFT,RIGHT,SUBSTRING, LEN - 문자열함수 (0) | 2025.03.25 |
[MS-SQL] DATEPART, DATENAME - 일자(요일,주차,분기) 함수 (0) | 2025.03.21 |
[MS-SQL] COMMIT, ROLLBACK, BEGIN TRAN (0) | 2025.02.11 |
[MS-SQL] 테이블별 용량확인 (0) | 2025.01.18 |
[MS-SQL] TOP, WITH TIES, ROW_NUMBER (0) | 2025.01.17 |
[MS-SQL] IIF, CASE ( DECODE, CASE ) 조건문 (0) | 2025.01.15 |
[MS-SQL] 테이블생성, 컬럼생성, 컬럼수정, 컬럼삭제, 테이블명변경 ( Create table, Alter table, Modify, Rename ) (0) | 2025.01.14 |