티스토리 뷰
들어가기전
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
위의 그림을 바탕으로 예시 테이블에 적용해보면.
select *
from member m
left join team t
on m.id = t.id;
[결과]
그림에서 볼 수 있듯이 "MEMBER"와 "TEAM"의 ID가 동일한 것들만 "TEAM"내용이 출력되고 동일하지 않은 것들은 null로 출력되며
left join이기 때문에 teamC는 출력되지 않는 걸 볼 수 있다.
RIGHT (OUTER) JOIN
위의 그림을 바탕으로 예시 테이블에 적용해보면.
select *
from member m
right join team t
on m.id = t.id;
[결과]
위의 LEFT JOIN과 동일하지만, 기준이 TEAM이라서 member3, member4과 출력되지 않고 teamC가 출력되는 것을 알 수 있다.
(INNER) JOIN
위의 그림을 바탕으로 예시 테이블에 적용해보면.
select *
from member m
inner join team t
on m.id = t.id;
[결과]
INNER JOIN의 경우 그림에서 볼 수 있듯 공통부분만 출력됨으로 ID값이 동일한 것들만 출력되는걸 확인할 수 있다.
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 |
---|
댓글