제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.05.27]
김뚱입니다
2025. 5. 27. 17:47
[강의 요약]
[Part 05. SQL_ Ch08. Union] 강의 수강
챕터 8 클립 전체 수강하였음
🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰ ] 72/100일 (72%)
바쁘다 너무 바쁘다... 수면이 너무 부족함
[Union]
▶ UNION이란?
UNION은 둘 이상의 SELECT 결과를 하나로 합치는 연산자
예를 들어, 조건이 서로 다른 두 쿼리의 결과를 나란히 보여주고 싶을 때 사용한다.
특징은 다음과 같다.
- 칼럼 수와 순서가 같아야 함
- 데이터 타입도 호환되어야 함
▶ 테스트 테이블 만들기
먼저 실습 환경 준비는 저번과 동일하다.
USE zerobase;
그 뒤에 테스트 테이블 생성
CREATE TABLE test1 (
name VARCHAR(20),
age INT
);
CREATE TABLE test2 (
name VARCHAR(20),
age INT
);
▶ 샘플 데이터 입력
INSERT INTO test1 VALUES ('아이유', 30), ('박보검', 33), ('김태리', 34);
INSERT INTO test2 VALUES ('아이유', 30), ('정해인', 35), ('수지', 32);
▶ UNION vs UNION ALL
1) UNION ALL : 중복을 포함하여 합치기
SELECT * FROM test1
UNION ALL
SELECT * FROM test2;
- 결과: 총 6개 (중복 허용)
2) UNION : 중복을 제거하고 합치기
SELECT * FROM test1
UNION
SELECT * FROM test2;
- 결과: 총 5개 (중복 제거됨)
▶ 예제 1: 조건이 다른 SELECT끼리 UNION
ex) 성별이 여성인 연예인 + 소속사가 YG인 연예인
SELECT * FROM celeb
WHERE gender = 'F'
UNION ALL
SELECT * FROM celeb
WHERE agency = 'YG엔터테이먼트';
- UNION ALL : 중복 포함
- UNION : 중복 제거
▶ 예제 2: 칼럼 수/타입 맞춰야 하는 이유
-- 잘못된 예시 (칼럼 수 다름)
SELECT name FROM test1
UNION
SELECT name, age FROM test2;
- 오류 발생 : SELECT 절의 칼럼 수가 다르면 실행되지 않음
▶ 예제 3: 칼럼명 통일이 중요할 때
SELECT name, job FROM celeb
WHERE job LIKE '%가수%'
UNION
SELECT name, birth, age FROM celeb
WHERE birth BETWEEN '1980-01-01' AND '1989-12-31';
이렇게는 불가능함
왜? 칼럼 수, 이름, 데이터 타입을 일치시켜야 하니까.
알맞게 수정하면 다음과 같음
SELECT name, job AS info FROM celeb
WHERE job LIKE '%가수%'
UNION
SELECT name, birth AS info FROM celeb
WHERE birth BETWEEN '1980-01-01' AND '1989-12-31';
- job, birth 모두 AS info로 통일
▶ 요약(비교)
비교 항목 | UNION | UNION ALL |
중복 제거 | O | X |
성능 | 느림 | 빠름 |
사용 용도 | 중복이 중요할 때 | 집계, 전체 병합 등 빠른 처리 필요 시 |
▶ 연습 예시
ex 1) 직업이 가수이거나 텔런트인 데이터를 중복 제거하여 합치기
SELECT * FROM celeb
WHERE job LIKE '%가수%'
UNION
SELECT * FROM celeb
WHERE job LIKE '%텔런트%';
ex 2) 성이 ‘이’씨이거나 1970년대 출생자 → 중복 포함
SELECT * FROM celeb
WHERE name LIKE '이%'
UNION ALL
SELECT * FROM celeb
WHERE birth BETWEEN '1970-01-01' AND '1979-12-31';
[나의 생각 정리]
UNION / UNION ALL을 사용하여 SQL에서 SELECT 결과를 유연하게 조합할 수 있다.
[적용점]
결과 조합에 사용
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”