UNION

김은비·2024년 4월 1일
0
  • UNION

테스트용 테이블 두 개를 만들었다.

또한 이전 시간까지 사용한 celeb 테이블도 사용하자~

UNION

Union이란 여러 개의 SQL문을 합쳐서 하나의 SQL문으로 만들어주는 방법이다.
컬럼의 개수가 같아야 한다.

UNION : 중복된 값을 제거하여 알려준다.
UNION ALL: 중복된 값도 모두 보여준다.

test1의 모든 데이터와 test2의 모든 데이터를 검색할 때,

중복된 값을 포함하여 검색:

select * from test1 
union all
select * from test2;

중복된 값을 제거하여 검색:

select * from test1
union
select * from test2;

celeb 테이블을 이용하여 검색을 실행해보자.

성별이 여자인 데이터를 검색하는 쿼리와
소속사가 YG엔터테인먼트인 데이터를 검색하는 쿼리를 UNION ALL로 실행:

select * from celeb where sex='F'
union all
select * from celeb where agency='YG엔터테인먼트';

성별이 여자인 데이터를 검색하는 쿼리와
소속사가 YG엔터테인먼트인 데이터를 검색하는 쿼리를 UNION으로 실행:

select * from celeb where sex='F'
union
select * from celeb where agency='YG엔터테인먼트';

조건 두 개가 중복되는 '이수현'데이터가
union all에서는 두 번, union에서는 한 번만 출력되었다.

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

select name, job_title from celeb where job_title like '%가수%' 
union 
select name, job_title from celeb where birthday between '1980-01-01' and '1989-12-31';

  • 문제 풀이

직업이 가수인 (가수를 포함하는) 데이터를 검색하는 쿼리와
직업이 텔런트인 (텔런트를 포함하는) 데이터를 검색하는 쿼리를
중복을 제거하여 합쳐서 실행하시오.

select * from celeb where job_title like '%가수%'
union
select * from celeb where job_title like '%텔런트%';

성이 이씨인 데이터를 검색하는 쿼리와
1970년대생을 검색하는 쿼리를
중복을 포함하여 합쳐서 실행하시오.

select * from celeb where name like '이%'
union all
select * from celeb where birthday between '1970-01-01' and '1979-12-31';

0개의 댓글