[SQL] UNION

허재훈·2023년 4월 26일
0

SQL

목록 보기
7/17
post-thumbnail

1. 실습환경 만들기

실습할 데이터베이스로 이동

  • zerobase 사용 (이동)
USE zerobase;

기존 테스트용 데이터 확인

SELECT * FROM celeb;

테스트용 테이블 생성

CREATE TABLE test1
(
    no int
);

CREATE TABLE test2
(
no int
);


![](https://velog.velcdn.com/images/hjh918/post/78898c20-af81-4bd3-a10f-4f7b4684d810/image.png)

![](https://velog.velcdn.com/images/hjh918/post/5c2d40ac-6fc5-458d-b503-28b257d76cb3/image.png)


## 테스트 데이터 추가

>
```sql
INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (2);
INSERT INTO test1 VALUES (3);

INSERT INTO test2 VALUES (5);
INSERT INTO test2 VALUES (6);
INSERT INTO test2 VALUES (3);

데이터 확인 - 1

SELECT * FROM test1;

데이터 확인 - 2

SELECT * FROM test2;

2. UNION

  • 여러 개의 SQL문을 합쳐서 하나의 SQL 문으로 만들어주는 방법 (주의. 칼럼의 개수가 같아야함)

UNION 문법

UNION

  • 중복된 값을 제거하여 알려준다.

UNION ALL

  • 중복된 값도 모두 보여준다.
SELECT column1, column2, ... FROM tableA
UNION | UNION ALL
SELECT column1, column2, ... FROM tableB;

UNION 예제 1 - UNION ALL

  • test1 의 모든 데이터와 test2 의 모든 데이터를 중복된 값을 포함하여 검색
SELECT * FROM test1
UNION ALL
SELECT * FROM test2;

UNION 예제 1 - UNION

  • test1 의 모든 데이터와 test2 의 모든 데이터를 중복된 값을 제거하여 검색
SELECT * FROM test1
UNION
SELECT * FROM test2;

UNION 예제 2 - UNION ALL

  • 성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테이먼트인 데이터를 검색하는 쿼리를 UNION ALL 로 실행
SELECT name, sex, agency FROM celeb WHERE sex = 'F'
UNION ALL
SELECT name, sex, agency FROM celeb WHERE agency = 'YG엔터테인먼트';

UNION 예제 2 - UNION

  • 성별이 여자인 데이터를 검색하는 쿼리와 소속사가 YG엔터테이먼트인 데이터를 검색하는 쿼리를 UNION 으로 실행
SELECT name, sex, agency FROM celeb WHERE sex = 'F'
UNION
SELECT name, sex, agency FROM celeb WHERE agency = 'YG엔터테인먼트';

UNION 예제 3 - 1

  • 가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리와,
    1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리를 UNION으로 실행

UNION 예제 3 - 2

  • 가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리
SELECT name, job_title 
FROM celeb 
WHERE job_title LIKE '%가수%';

UNION 예제 3 - 3

  • 1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리
SELECT name, birthday, age FROM celeb
WHERE birthday BETWEEN '1980-01-01' AND '1989-12-31';

UNION 예제 3 - 4

  • 가수가 직업인 연예인의 이름, 직업을 검색하는 쿼리와,
    1980년대에 태어난 연예인의 이름, 생년월일, 나이를 검색하는 쿼리를 UNION으로 실행
SELECT name, job_title FROM celeb WHERE job_title LIKE '%가수%'
UNION
SELECT name, birthday, age FROM celeb
WHERE birthday BETWEEN '1980-01-01' AND '1989-12-31';

  • 뭐지??

위 글은 제로베이스 데이터 취업 스쿨의 강의자료를 참고하여 작성되었습니다.

profile
허재

0개의 댓글