조인의 종류와 각각의 차이점을 설명해주세요.
면접용 답변
SQL에서 조인(JOIN)은 두 개 이상의 테이블을 연결해 하나의 결과로 반환하는 데 사용됩니다. 조인의 종류로는 INNER JOIN, OUTER JOIN(LEFT, RIGHT, FULL), CROSS JOIN, SELF JOIN 등이 있으며, 조인의 종류는 두 테이블 간의 매칭 조건 유무와 데이터를 포함하는 방식에 따라 나뉩니다.
INNER JOIN은 양쪽 테이블에 모두 존재하는 값만 반환합니다.
LEFT OUTER JOIN은 왼쪽 테이블의 모든 데이터를 기준으로 오른쪽에 일치하는 값이 없으면 NULL로 채워집니다.
RIGHT OUTER JOIN은 오른쪽 테이블을 기준으로 동작합니다.
FULL OUTER JOIN은 양쪽 테이블 중 하나라도 일치하는 값이 있다면 모두 포함합니다.
CROSS JOIN은 조인 조건 없이 모든 가능한 조합(카테시안 곱)을 생성합니다.
SELF JOIN은 자기 자신과 조인할 때 사용됩니다.
개념 설명
조인의 종류
INNER JOIN
양쪽 테이블에 모두 존재하는 값만 반환 그냥 JOIN만 쓰면 INNER JOIN 뜻함
교집합
LEFT OUTER JOIN
왼쪽 테이블의 모든 행 + 오른쪽과 일치하지 않으면 NULL (LEFT JOIN)
왼쪽 기준, NULL 포함
RIGHT OUTER JOIN
오른쪽 테이블의 모든 행 + 왼쪽과 일치하지 않으면 NULL (RIGHT JOIN)
오른쪽 기준, NULL 포함
FULL OUTER JOIN
양쪽 테이블에 하나라도 존재하면 모두 포함. 일치하지 않으면 NULL로 채움 (FULL JOIN)
합집합 (일치하지 않는 부분은 NULL로 채움)
CROSS JOIN
두 테이블의 모든 조합을 반환 (ON 절 없음)
곱집합 (m개 × n개)
SELF JOIN
자기 자신을 기준으로 조인하는 방식 (자체 비교 등)
계층 구조 표현
FULL OUTER JOIN
MySQL은 기본적으로
FULL OUTER JOIN을 직접 지원하지 않음 →UNION을 사용해 LEFT JOIN + RIGHT JOIN을 합쳐 구현할 수 있음
CROSS JOIN
A: a, b B: 1, 2 → 결과: (a,1), (a,2), (b,1), (b,2)
SELF JOIN
같은 테이블을 두 번 불러와 자기 자신과 비교
별칭(e1, e2)으로 구분
추가 질문
OUTER JOIN을 사용할 때 주의할 점은?
OUTER JOIN을 사용할 때는 NULL이 포함될 수 있다는 점에 주의해야 합니다. 특히 COUNT() 함수와 함께 사용할 경우, 집계 방식에 따라 예상치 못한 결과가 나올 수 있습니다.
예를 들어, LEFT OUTER JOIN을 사용하고 B 테이블에 매칭되는 값이 없는 경우 B.id는 NULL이 됩니다.
이때 COUNT(B.id)로 집계하면, NULL은 세지 않기 때문에 해당 행은 집계되지 않습니다.
반면, COUNT(*)는 행 자체를 세기 때문에 NULL 여부와 상관없이 모든 행을 센다는 차이가 있습니다.
Last updated