여러 개의 SQL문을 합쳐서 하나의 SQL문으로 만들어주는 방법
*column의 개수가 같아야 함
select column1, column2, ... from table1
union | union all
select column1, column2, ... from table2;
두 개 이상의 테이블을 결합하는 것
INNER JOIN
: 두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식
select column1, column2, ...
from table1
inner join table2
on table1.column = table2.column
where conditon;
LEFT JOIN
: 두 개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인방식
*오른쪽 테이블에 없는 값은 NULL 처리
select column1, column2, ...
from table1
left join talbe2
on table1.column = table2.column
where condition;
RIGHT JOIN
: 두 개의 테이블에서 공통영역을 포함해 오른쪽 테이블의 다른 데이터를 포함하는 조인방식
*왼쪽 테이블에 없는 값은 NULL 처리
select column1, column2, ...
from table1
right join talbe2
on table1.column = table2.column
where condition;
FULL OUTER JOIN
: 두개의 테이블에서 공통영역을 포함하여 양쪽 테이블의 다른영역을 모두 포함하는 조인방식
select column1, column2, ...
from table1
full outer join talbe2
on table1.column = table2.column
where condition;
*mysql에서는 지원하지 않는 문법이기 때문에 다음과 같은 쿼리로 실행
select column1, column2, ...
from table1
left join table2 on table1.column = table2.column
union
select column1, column2, ...
from table1
right join table2 on table1.column = table2.column
where condition;
SELF JOIN
: join문을 사용하지 않고 where절에 기준을 명시하는 조인방식
select column1, column2, ...
from table1, table2, ...
where condition;
ex) celeb 테이블의 연예인 중, snl_show에 host로 출연했고 소속사가 안테나인 사람의 이름과 직업을 검색
select celeb.name, celeb.job_title
from celeb, snl_show
where celeb.name = snl_show.host and celeb.agency = '안테나';