[MySQL] Inner Join & Outer Join 의 차이점
🔶 JOIN 이란?
한 데이터베이스 내에서 분리되어있는 여러 테이블에서 원하는 결과를 도출해내기 위해
컬럼을 기준으로 행을 합쳐 사용하는것을 말한다.
🔶 JOIN을 사용하는 이유는 뭘까?
테이블을 분리하는 이유가 무엇일까?
우리가 어느 목적지를 향해 모험을 하고 죽으면 다시 처음으로 리스폰 하는 게임을 한다고 가정하였을 때
만약 세이브 포인트를 다 무시하고 목적지로만 곧바로 직진하게된다면 매우 빠른 속도로 클리어할것이다.
그러나 모험을 하다보면 생각치도 못한 변수나 좋지않은 상황이 발생할수도 있다.
그럴때 마다 다시 처음으로 되돌아가 시작하게된다면 어쩌면 훨씬 더 시간이 많이 걸리게될 수 있다.
그것을 방지하기 위해 세이브포인트가 있는 것이다 .
목적지로 향하는 시간이 조금 더딜수 있으나 세이브포인트로 인하여 예기치 못한 상황이 생겨도 유연하게 상황을 대처할수있게 된다.
이것이 테이블을 분리하는 이유이다.
테이블을 분리하지않고 그냥 전부 하나로 합쳐 버린다면 우리가 해당 테이블을 접근할때 빠르게 접근할 수 있을 것이다.
그러나 생각지 못한 변수 , 즉 보수를 해야하는 상황이거나 에러가 발생하여 수정을 해야하는 상황일때
이미 하나로 합쳐져버린 테이블을 고치려면 처음부터 다 뜯어보아야할것이다.
이러한 상황을 대비하기위해 테이블을 분리하여 중복을 없애고 각 테이블에 독립성을 높여
유지 보수에 효율적이도록 변환하는것을 정규화 라고한다.
따라서
JOIN을 사용하는 이유는 이러한 분리된 관계형 데이터베이스 안에서도 우리가 원하는 결과만을 추려내어
도출해내야하기때문에 JOIN을 사용하여 테이블을 새롭게 조합하는것이다 .
🔶 INNER JOIN | OUTER JOIN
JOIN은 크게 두 가지로 나눌수있다.
▪️ INNER JOIN : 두 테이블의 공통적인 레코드만 추출하는것을 의미하며, 교집합의 특성을 가진다.
▪️ OUTER JOIN : 두 테이블에서 조건이 일치하는 데이터와 일치하지 않는 데이터 모두 추출하며,
합집합의 특성을 가진다.
OUTER JOIN에서 중요한것은 어느 테이블을 중심으로 JOIN 하는지이다.
중심이 되는 테이블은 조건이 일치하지않아도 전부 추출되고 나머지 테이블은 조건이 일치하는 데이터만 출력된다.
그 중심을 지정하는 OUTER JOIN 의 종류는 크게 3가지로
Left 를 기준으로 Join 하는 Left Outer Join
Right를 기준으로 Join 하는 Right Outer Join
기준 없이 모두 Join 하는 Full Outer Join 까지 있다.
다만 Full Outer Join은 mySql에서 지원하지않는다.
예제
Inner Join 과 Outer Join을 알아보기위한 테스트용 예제를 가져와보겠다.
Person 테이블 Student 테이블
🔸 Inner Join 예제
select * from student inner join person
on student.name = person.name;
name에서 공통되는 레코드를 추출하여 Join한 테이블이다.
두 테이블에서는 짱구와 유리가 공통되어 추출되었다.
Left Outer Join 예제
select * from student Left Outer join person
on student.name = person.name;
Left를 기준으로 Left에 테이블의 행은 모두 조건없이 추출되고
Right는 조건에 일치하는 행만 추출 되었다.
Right Outer Join 예제
select * from student right Outer join person
on student.name = person.name;
Right 를 기준으로 Right의 테이블은 모두 추출
Left는 조건에 맞는 행만 추출되었다