🤔 면접 질문
Q1. left outer join, inner join 차이를 설명해 주세요
A1. Join이란 두 개 이상의 테이블을 서로 연결하여 하나의 결과를 만들어 보여주는 것을 말합니다.
inner join(또는 join)은 두 테이블에 모두 있는 내용만 join되는 방식입니다. left outer join(또는 left join)은 왼쪽 table의 모든 행에 대해서 join을 진행합니다.
💡 면접🐕🍯 tip
Join중에 가장 자주 사용되는 inner join과 left outer join을 제대로 이해하고, 사용할 수 있는지 묻는 질문이다.
Join은 실무에서도 자주 사용되기 때문에 면접 질문으로도 가끔 나온다. 따라서 둘의 차이점을 간결하게 설명하면 된다.
1️⃣ Inner Join(내부조인)
두 테이블을 연결할 때 가장 많이 사용되는 것이 inner join이다. inner join은 줄여서 join으로 부르기도 한다.
두 테이블을 join하기 위해서는 두 테이블이 1:N 관계로 연결되어야 한다.
1:N 관계는 주로 primary key와 foreign key 관계로 맺어져 있다. (상호조인의 경우에는 PK-FK 관계가 아니여도 된다.)
2️⃣ [SQL Join 예시]
1. 인사정보 테이블 : INSA
CODE | NAME | SOSOK |
A1 | 이순신 | 해군 |
A2 | 장보고 | 해군 |
A3 | 광개토 | 육군 |
A4 | 터틀넥 | 공군 |
A5 | 홍길동 | 공군 |
2. 계급 코드 테이블 : RANKCODE
CODE | RANKNAME |
A1 | 대장 |
A2 | 소령 |
A3 | 병장 |
A4 | 대위 |
3. Inner Join SQL 예시
SELECT * FROM INSA INNER JOIN RANKCODE ON INSA.CODE = RANKCODE = CODE;
code | name | sosok | code | rankname |
A1 | 이순신 | 해군 | A1 | 대장 |
A2 | 장보고 | 해군 | A2 | 소령 |
A3 | 광개토 | 육군 | A3 | 병장 |
A4 | 터틀넥 | 공군 | A4 | 대위 |
* 두 테이블에 공통된 데이터가 존재하는 행에 대해서만 데이터를 검색된 것을 볼 수 있다.
4. Left Outer Join 예시
SELECT * FROM INSA LEFT JOIN RANKCODE ON INSA.CODE = RANKCODE.CODE;
code | name | sosok | code | rankname |
A1 | 이순신 | 해군 | A1 | 대장 |
A2 | 장보고 | 해군 | A2 | 소령 |
A3 | 광개토 | 육군 | A3 | 병장 |
A4 | 터틀넥 | 공군 | A4 | 대위 |
A5 | 홍길동 | 공군 | NULL | NULL |
* 왼쪽 'INSA' 테이블의 모든 데이터를 포함한 데이터가 검색된 것을 볼 수 있다.