프로그래밍백엔드 개발자

SQL에서 INNER JOIN과 OUTER JOIN(LEFT, RIGHT, FULL OUTER JOIN)의 차이점을 설명하고, 데이터 작업의 다양한 시나리오에서 적절한 조인 유형을 선택하는 방법에 대해 설명하십시오. 각 JOIN 유형의 올바른 사용 예를 제공하십시오.

Hintsage AI 어시스턴트로 면접 통과

답변

INNER JOIN은 지정된 조건에 따라 두 개의 조인된 테이블 모두에서 일치가 발견된 경우만 레코드를 반환합니다. OUTER JOIN(LEFT, RIGHT, FULL)을 사용할 때 결과는 다른 테이블에서 일치가 없더라도 한쪽 또는 양쪽 테이블의 모든 행을 포함합니다.

  • LEFT OUTER JOIN: 왼쪽 테이블의 모든 행 + 오른쪽의 일치가 있는 경우 그에 대한 값 (없으면 NULL).
  • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행 + 왼쪽의 일치가 있는 경우 그에 대한 값 (없으면 NULL).
  • FULL OUTER JOIN: 두 테이블 모두에서 모든 행을 포함하며, 일치가 없는 경우 NULL로 표시됩니다.

어떤 JOIN을 언제 사용해야 하는지:

  • 일치하는 행만 필요하다면 INNER JOIN을 사용하세요.
  • LEFT JOIN은 오른쪽 테이블의 일치 여부와 관계없이 왼쪽 테이블의 모든 행이 중요할 때 사용합니다.
  • RIGHT JOIN은 반대 경우에 해당합니다.
  • FULL OUTER JOIN은 전체 통합 목록을 제공합니다 (불일치를 찾는 데 유용합니다).

예시:

-- INNER JOIN SELECT u.id, u.name, o.amount FROM users u INNER JOIN orders o ON u.id = o.user_id; -- LEFT OUTER JOIN SELECT u.id, u.name, o.amount FROM users u LEFT JOIN orders o ON u.id = o.user_id; -- FULL OUTER JOIN SELECT u.id, o.order_id FROM users u FULL OUTER JOIN orders o ON u.id = o.user_id;

속임수 질문

오른쪽 테이블이 비어 있을 때 LEFT JOIN의 결과는 무엇인가요?

종종 "LEFT JOIN은 일치가 없으니 빈 결과를 반환합니다"라고 대답합니다. 정답: LEFT JOIN은 어쨌든 왼쪽 테이블의 모든 행을 반환하고 오른쪽 열은 NULL이 됩니다.

예시:

-- users 테이블에는 레코드가 있고, orders는 비어 있음 SELECT u.id, u.name, o.amount FROM users u LEFT JOIN orders o ON u.id=o.user_id; -- 결과: 모든 사용자, o.amount = NULL

주제에 대한 미세한 지식 부족으로 인한 실제 오류의 예


이야기

판매 분석 프로젝트. 전체 고객 목록과 그들의 주문을 출력하기 위해 INNER JOIN을 사용했기 때문에 주문이 없는 고객이 생략되었습니다. 보고서에서 "중요한" 고객들이 오른쪽 테이블에 없어서 누락되었습니다. 해결책: LEFT JOIN을 사용합니다.


이야기

직원 및 부서 관리 플랫폼. LEFT JOIN 대신 RIGHT JOIN을 사용하여 새로운 부서를 추가할 때 혼란이 발생했고, 일부 직원들이 보고서에 포함되지 않았습니다. 이유: 조인 순서가 뒤바뀌었습니다.


이야기

데이터 스키마 마이그레이션. 변경 후 조인 중 하나가 연결 조건의 오타로 인해 CROSS JOIN으로 바뀌었습니다. 결과적으로 선택된 데이터의 양이 급격히 증가하였고 데이터가 "부풀어" 올랐습니다. 결론: 항상 JOIN 시 ON을 명시하고 JOIN 유형을 철저히 확인해야 합니다.