본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project/MySQL

MySQL - 테이블 결합, inner join, outer join

728x90

테이블 결합 작업에는 'join'이 사용됩니다.

join의 종류를 다음과 같이 시각화할 수 있습니다.

join의 종류

 

#inner join

두 테이블에서 공통되는 열을 기준으로 합칩니다.

 

사용 예시

select * 
from nameoftalbe_1 as t1
inner join nameoftable_2 as t2
on t1.col_1 = t2.col_1;

→ nameoftable_1 을 t1, nameoftable_2 을 t2로 가져옵니다. 두 테이블에서 t1의 col_1과 t2의 col_1을 기준으로 합칩니다.

 

그런데 만약 여기서 * 대신에 col_1을 쓰면 오류가 발생합니다.

두 테이블 모두다 col_1을 갖고 있기때문에 발생하는 오류입니다.

명시적으로 어디 테이블의 col_1인지 알려줘야합니다.

예를 들어 select t1.col_1 from ··· 이렇게 작성해줘야 합니다. 

 

 

#outer join

inner join 과 달리 한쪽 테이블에만 존재하는 데이터도 출력합니다.

 

사용 예시

select * 
from nameoftable_1 as t1
right outer join nameoftable_2 as t2
on t1.col_1 = t2.col_1;

→ 오른쪽 테이블을 기준으로 합치므로 nameoftable_2가 기준이 됩니다.

inner join에서의 예시와 같이  t1의 col_1과 t2의 col_1을 기준으로 합칩니다.

만약 t1에 없는 데이터가 t2에 존재한다면 t2는 모두 출력하고 t1에서는 null로 처리됩니다.

또한 만약 위의 예시에서 right가 아니라 left outer join 이면 t2에만 존재하는 데이터는 아예 출력이 안되게 됩니다.