SQL을 공부하는 건 즐거웠다. 논리적으로 이해가 잘 됬기 때문이다. 하지만
JOIN
을 공부하면서는 조금 헷갈리기 시작했다.RIGHT JOIN
LEFT JOIN
FULL JOIN
등등의 다양한JOIN
에 대해서 정확히 알아야 SQL에 대한 흥미를 더 돋굴수 있을거라 생각해서 이렇게 글을 쓰기로 마음먹었다.
쿼리문 하나로 연관성이 있는 두개의 테이블을 결합시킬때는
JOIN
문을 사용하면 됩니다.
이미지 출처: w3schools
JOIN
은 두개의 테이블을 결합할 때 사용 되는데 위의 밴다이어그램에 표현된 것 처럼 집합 개념으로 생각하면 이해하기 어렵지 않습니다.
교집합, 즉 연결성이 있는 부분(칼럼)으로 두 개의 테이블을 결합 할 수 있습니다.
즉
JOIN
이란 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법입니다. 자신이 검색하고 싶은 컬럼이 다른 테이블에 있을 경우 주로 사용하며 여러 개의 테이블을 마치 하나의 테이블인 것처럼 활용하는 방법입니다. 보통Primary key
혹은Foreign key
로 두 테이블을 연결합니다. 테이블을 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야 합니다.
간단하게 교집합이라고 생각하시면 됩니다. 기준 테이블과 Join 한 테이블의 중복된 값을 보여줍니다.
결과값은 A의 테이블과 B테이블이 모두 가지고 있는 데이터만 검색됩니다.
기준테이블의 값 + 테이블과 기준 테이블의 중복된 값을 보여줍니다.
왼쪽 테이블을 기준으로 JOIN을 한다고 보면 이해가 편합니다.
그럼 결과값은 A테이블의 모든 데이터와 A테이블과 B테이블의 중복되는 값이 검색됩니다.
LEFT OUTER JOIN의 반대 개념이라고 생각하면 됩니다
오른쪽 테이블을 기준으로 JOIN을 하는 것 외에는 LEFT OUTER JOIN 과 다른 점이 없습니다.
최종 결과값은 B테이블의 모든 데이터와 A테이블과 B테이블의 중복되는 값이 검색됩니다.
합집합을 생각하시면 됩니다. (두 집합이 합쳐진 상태)
A테이블이 가지고 있는 데이터 , B테이블이 가지고 있는 데이터 모두 검색되며, 사실상 기준 테이블의 의미가 없습니다.