- UNION
테스트용 테이블 두 개를 만들었다.
또한 이전 시간까지 사용한 celeb 테이블도 사용하자~
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';