티스토리 뷰

Computer Science/Database

[SQL] 02. Join 정리

This2sho 2022. 1. 31. 20:15

들어가기전

on 절

where절 처럼 Join의 조건을 걸어주는 역할

참고: jpa에서 사용하는 문법과의 차이
left outer join은 left join과 같고
inner join은 join과 같다. (그냥 줄여서 쓰는 거임)

예시 테이블)

아래의 테이블은 "MEMBER"테이블

ID NAME AGE
1 member1 10
2 member2 20
3 member3 30
4 member4 40

아래의 테이블은 "TEAM"테이블

ID NAME
1 teamA
2 teamB
5 teamC

위 두 테이블을 가지고 그림과 코드를 가지고 Join을 정리해보자.

LEFT (OUTER) JOIN

A를 기준으로한 LEFT JOIN

위의 그림을 바탕으로 예시 테이블에 적용해보면.

select *
from member m
left join team t
on m.id = t.id;

[결과]

그림에서 볼 수 있듯이 "MEMBER"와 "TEAM"의 ID가 동일한 것들만 "TEAM"내용이 출력되고 동일하지 않은 것들은 null로 출력되며 

left join이기 때문에 teamC는 출력되지 않는 걸 볼 수 있다.

RIGHT (OUTER) JOIN

B를 기준으로한 RIGHT JOIN

위의 그림을 바탕으로 예시 테이블에 적용해보면.

select *
from member m
right join team t
on m.id = t.id;

[결과]

위의 LEFT JOIN과 동일하지만, 기준이 TEAM이라서 member3, member4과 출력되지 않고 teamC가 출력되는 것을 알 수 있다.

 

(INNER) JOIN

A와 B의 INNER JOIN

위의 그림을 바탕으로 예시 테이블에 적용해보면.

select *
from member m
inner join team t
on m.id = t.id;

[결과]



INNER JOIN의 경우 그림에서 볼 수 있듯 공통부분만 출력됨으로 ID값이 동일한 것들만 출력되는걸 확인할 수 있다.

FULL (OUTER) JOIN

A와 B의 FULL OUTER JOIN

위의 그림을 바탕으로 예시 테이블에 적용해보면.

select *
from member m left join team t
on m.id = t.id
union 
select *
from member m right join team t
on m.id = t.id;
참고: 
현재 예시로 db에서는 full outer join을 지원하지 않기 때문에 union을 이용해서 full outer join과 같이 만들었다.

[결과]

FULL OUTER JOIN의 경우 지원하지 않는 DB도 많은데(Mysql, H2...)

결과를 보면 ID를 기준으로 모든 ROW들이 두 테이블 다 출력되는 걸 알 수 있다.

'Computer Science > Database' 카테고리의 다른 글

[SQL] 01. having과 where  (0) 2022.01.31
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함