원하는 데이터가 여러 테이블에 분산되어 있을 때, 하나의 테이블로 결합시킬 수 있다.
JOIN문을 활용하면 가능한데, 아래와 같은 형식으로 작성한다.
select*
from food_orders fo join customers c on fo.customer_id = c.customer_id
두 테이블에 공통적으로 존재하는 컬럼을 on 다음에 작성해주는 형태로 두 테이블을 join해줄 수 있다.
두 테이블을 join할 때에, 한 쪽 테이블만 데이터값을 가지고 있는 경우가 있다.
예를 들어, customer테이블과 order테이블 모두 customer_id컬럼에 대한 값들을 가지고 있으나, 어떤 customer_id 들은 order 데이터가 없는 경우가 있을 수 있다.
이때, 데이터 값이 없는 행들도 join한 테이블에 추가할 것인지, 추가하지 않을것인지 결정할 수 있다.
select*
from a left join b on a.customer_id = b.customer_id
테이블 a 와 b를 left join하면, a를 기준으로 a와 b가 합쳐진 테이블이 생성된다. a가 기준이기 때문에 b에 데이터값이 없더라도 null로 표시되고, a는 모든 데이터가 조회된다.
select*
from a inner join b on a.customer_id = b.customer_id
inner join하면 a와 b테이블 모두 데이터값을 가지는 경우에만 조회되는 테이블이 생성된다. a와 b 모두 가지고 있는 데이터가 기준이다.