어제오늘은 subquery와 join에 대해 공부했다. 내일배움캠프에 들어와서 사전캠프를 진행하며 처음으로 난항을 겪으며 시간을 많이 할애하게 되었는데 left join과 inner join의 개념이 헷갈렸기때문이다.
subquery의 개념은 간단하다. 수학 공식에서 복잡한 식들을 괄호 안에 묶어 먼저 계산해주듯 query 안에 query를 넣어 연산을 편하게 만들어주는 것이다.
구조도 어렵지 않다. 평소에 하는 것처럼 query를 만들어준 후에 이를 괄호로 묶어 어버이 query의 from 안에 넣어준다.
select *
from
(
select 내용
from 테이블명
) subquery의 별명
서로 다른 두 개의 테이블에 있는 데이터를 같이 쓰고 싶을 때가 있다.
공통된 칼럼을 기준으로 두 테이블을 묶어 줄 수 있는데 이것이 바로 Join이다.
Join에는 두 가지 방식이 있는데 left join과 inner join이 있다.
Left join은 공통된 칼럼을 가진 A와 B의 모든 데이터(행)을 가져오고 거기에 나머지 left 테이블(A라 가정)의 데이터를 가져온다. left에 치우친 데이터를 가져오는 것이기때문에 left에는 공백인 데이터가 있을 수 있다.
Inner join은 공통된 칼럼을 기준으로 양 쪽에 공백이 있는 데이터가 없도록 모두 채워진 데이터만을 가져온다.
A left join B : A의 모든 데이터 + A와 공통되는 부분(칼럼)의 B 데이터
A inner join B : 서로 공통되는 부분(칼럼)의 데이터
Left Join의 구조는 다음과 같다.
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명
Inner Join의 구조는 다음과 같다.
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명