UNION : 여러 개의 SQL문을 하나의 SQL문으로 만드는 방법
(주의! 컬럼 개수가 같아야 함!)
UNION : 중복된 값 제거
UNION ALL : 중복된 값 포함
[test1 테이블]
[test2 테이블]
select * from test1
UNION -- 중복을 제거하여 합침
select * from test2;
[UNION : 중복값 제거]
select * from test1
UNION ALL -- 중복을 포함하여 합침
select * from test2;
[UNION ALL : 중복값 포함]
ex) 성이 '이'씨인 데이터를 검색하는 쿼리와 1970년대생을 검색하는 쿼리를 중복을 포함하여 합쳐서 실행
select * from celeb where name like '이%'
UNION ALL -- 중복을 포함하여 합침
select * from celeb where birthday between 19700101 and 19791231;
JOIN : 두 개 이상의 테이블을 결합하는 것
INNER JOIN : 두 개 테이블에서 공통 요소 결합
select c.id, c.name, s.id, s.host
from celeb c
INNER JOIN snl_show s -- INNER JOIN
ON c.name = s.host; -- ON: join 조건
select c.id, c.name, s.id, s.host
from celeb c
LEFT JOIN snl_show s -- LEFT JOIN
ON c.name = s.host -- ON: join 조건
select c.id, c.name, s.id, s.host
from celeb c
RIGHT JOIN snl_show s -- RIGHT JOIN
ON c.name = s.host -- ON: join 조건
select c.id, c.name, s.id, s.host
from celeb c
FULL JOIN snl_show s -- FULL JOIN
ON c.name = s.host -- ON: join 조건
--[ ERROR ] !!!MySQL 은 FULL JOIN 지원 X!!!
-- 대신 "LEFT JOIN - UNION - RIGHT JOIN"
select c.ID, c.name, s.id, s.host
from celeb c
LEFT JOIN snl_show s
on c.name = s.host
UNION
select c.ID, c.name, s.id, s.host
from celeb c
RIGHT JOIN snl_show s
on c.name = s.host;
select c.name, c.job_title
FROM celeb c, snl_show s
WHERE c.name = s.host -- snl에 호스트로 출연하고
and c.agency = '안테나'; -- 안테나 소속사인 사람