Search
Duplicate
📂

[SQL] JOIN 정리

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
sql
mysql
Data Base
C++
Scrap
태그
9 more properties
원본 글

헷갈리는 SQL JOIN문 정리합니다!

DB를 사용하다보면 join을 사용해야 할 경우가 많은데 오랫동안 사용하지 않으면 또 까먹기 마련입니다.
코딩 테스트에도 자주 등장하는 SQL JOIN에 대해서 이번 기회에 정리해 봅니다!
이 글은 MySQL DB를 기준으로 작성했습니다.
SQL join 문이 가장 잘 정리 되어 있는 그림인 것 같습니다.
join: 동일한 column을 기준으로 테이블을 하나로 합칩니다.

 left(right) join 과 left(right) outer join의 차이점

>>> 실행 결과는 동일 합니다.
left join의 경우 동일한 column으로 하나로 합쳐지고 left 쪽(A)의 모든 데이터를 포함하고 B의 데이터는 null로 표시 됩니다.
Search
A 테이블 예시
A 테이블
id
name
Search

left join 결과

Search
A left join B
id
name
id 1
name 1
1
1
null
null
2
2
2
AAA
SELECT * from A left join B on A.id = B.id;
SQL
복사
id를 기준으로 A 테이블의 손상 없이 두 테이블을 합칩니다.
B 테이블에 존재하지 않는 id의 데이터는 null로 표시됩니다.
이 null 값을 where 조건을 사용하면 A 혹은 B만 가지고 있는 데이터를 가져올 수 있습니다.

A와 B 테이블 공통 데이터 가져오기 (inner join과 동일)

Search
A left join B
id
name
id 1
name 1
1
2
2
AAA
SELECT * from A left outer join B on A.id = B.id where B.id is not null;
SQL
복사
위 코드의 결과는 inner join을 사용한 것과 동일 합니다.
SELECT * from A inner join B on A.id = B.id;
SQL
복사

A 테이블에만 있는 데이터만 가져오기

Search
A left join B
id
name
id 1
name 1
1
1
2
AAA
SELECT * from A left outer join B on A.id = B.id where B.id is null;
SQL
복사