SQL 기초 (7) - JOIN

이휘연·2024년 2월 7일

SQL

목록 보기
7/12

JOIN

JOIN을 사용해 두 개 이상의 테이블을 결합할 수 있습니다.

INNER JOIN

두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인하는 방식입니다.
교집합의 방식이라고 생각하면 이해가 빠릅니다.

select column1, column2
from tableA (가져올 테이블 설정)
INNER JOIN tableB (조인하는 방법 설정)
on tableA.column = tableB.column (JOIN의 기준)
where condition;

테이블 A의 컬럼과 테이블 B의 컬럼이 같은 경우 (데이터가 같은 경우) 조인이 가능합니다.

💡주의💡
테이블이 2개 이상인 경우부터 어느 테이블의 컬럼인지 점(.)을 이용해 명시를 해야합니다.

예제

snl_host에 호스트로 출현한 celeb을 기준으로
celeb테이블과 snl_host 테이블을 inner_join 하세요.


UNION과 다르게, JOIN은 수평으로 결합됩니다.

LEFT JOIN

두 개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인하는 방식입니다.

select column1, column2
from tableA
LEFT JOIN tableB
on tableA.column = tableB.column
where condition;

예제

snl_host에 호스트로 출현한 celeb을 기준으로
celeb테이블과 snl_host 테이블을 left join 하세요.
from celeb을 입력하고 left join을 입력하니
celeb의 모든 ID, 이름 데이터를 갖고 온 것을 볼 수 있습니다.

그리고 snl_show 테이블에서 기준과 맞는 값들만 결과로 나오고
나머지는 NULL로 나온 것을 볼 수 있습니다.

RIGHT JOIN

두 개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인하는 방식입니다.

select column1, column2
from tableA
RIGHT JOIN tableB
on tableA.column = tableB.column
where condition;

예제

snl_host에 호스트로 출현한 celeb을 기준으로
celeb테이블과 snl_host 테이블을 right join 하세요.

이번에는 snl_show의 모든 ID, 호스트 데이터를 갖고 온 것을 볼 수 있습니다.

그리고 celeb 테이블에서 기준과 맞는 값들만 결과로 나오고
나머지는 NULL로 나온 것을 볼 수 있습니다.

FULL OUTER JOIN

두개의 테이블에서 공통영역을 포함하여 양쪽 테이블의 다른영역을 모두 포함하는 조인 방식입니다.
합집합의 방식이라고 생각하면 이해가 빠릅니다.

select column1, column2
from tableA
FULL OUTER join tableB
on tableA.column= tableB.column
where condition;

이 방법으로 입력을 할 수 있지만 mySQL에서는 이 쿼리를 사용할 수 없습니다.

select column1, column2
from tableA
left join tableB
on tableA.column= tableB.column
UNION
select column1, column2
from tableA
right join tableB
on tableA.column= tableB.column

mySQL에서 FULL OUTER JOIN과 같은 기능을 사용하려면
LEFT JOIN과 RIGHT JOIN, UNION 활용하는 방법이 있습니다.

예제

snl_host에 호스트로 출현한 celeb을 기준으로
celeb테이블과 snl_host 테이블을 FULL OUTER JOIN 해주세요

모든 데이터가 합쳐진 것을 볼 수 있습니다.

profile
안녕하세요

0개의 댓글