[DB] 내부조인, 외부조인

[verify$y]·2025년 7월 31일

CS핵심개념

목록 보기
10/35

INNER JOIN

  • 내부조인

정의

  • 조인조건에서 양쪽 테이블 모두 일치하는 행만 반환
  • 교집합 역할

문법

  • 테이블 A와. B의 교집합인 행만 리턴한다.
SELECT *
FROM A
INNER JOIN B ON A.id = B.id; 

예시

  • member, order 테이블에서 id가 일치하는 데이터만 조회
  • 회원정보에 있으나 주문정보에는 없는 회원을 제외
SELECT m.name, o.product
FROM member m 
INNER JOIN orders o ON m.id = o.member_id; 



OUTER JOIN

  • 외부조인

정의

  • 조인조건에서 불일치하는 행도 포함시켜 결과를 반환
  • 누락된 쪽에는 NULL처리하여 리턴값으로 반환한다.

다양한 옵션

  • LEFT OUTER JOIN
    • sql에서 왼쪽 테이블기준으로
    • 왼쪽은 모두 포함, 오른쪽은 없으면 NULL처리한다.
  • RIGHT OUTER JOIN
    • 오른쪽 테이블을 기준으로
    • 오른쪽은 모두 포함하며, 왼쪽은 없으면 NULL처리한다.
  • FULL OUTER JOIN
    • 일치하는 값과 일치하지 않는 값 모든 행을 포함한다.
    • MySQL은 지원하지 않는 기능, Oracle은 지원

SQL예시

SELECT m.name, o.product
FROM member m
LEFT OUTER JOIN orders o ON m.id = o.member_id; 
  • LEFT OUTER JOIN
  • 모든 회원출력된다.
  • 주문없는 회원은 product컬럼이 NULL로 되어 리턴된다.



SELECT m.name, o.product
FROM member m
RIGHT OUTER JOIN orders o ON m.id = o.member_id; 
  • RIGHT OUTER JOIN
  • 모든 주문이 출력
  • 주문자 정보없는 회원이름은 NULL


SELECT m.name, o.product
FROM member m
FULL OUTER JOIN orders o ON m.id = o.member_id;
  • FULL OUTER JOIN
  • member나 orders에 하나라도 존재하면 리턴


INNER JOIN vs OUTER JOIN

  • 반환행
    • inner : 조건이 양쪽에 다 만족하는 행만
    • outer : 조건에 맞지않아도 한쪽또는 모두 포함
  • NULL 포함여부
    • inner : x
    • outer : 조건 미충족시 NULL값을 넣음
  • inner : 데이터정확성 체크, 교집합 추출
  • outer : 누락된 데이터 확인용으로 사용가능

활용방법

  • LEFT OUTER JOIN은 누락된 데이터 확인용, 기준테이블을 기준으로 보고 싶을떄 사용한다.
  • 조인을 많이 하는 테이블은 조인 조건에서 인덱스가 없을 경우 성능저하가능
  • WHERE 절 조건 순서가 OUTER JOIN 결과에 영향


예상질문과 답변

Q. INNER JOIN과 LEFT OUTER JOIN의 차이

  • inner join은 두 테이블에 모두 존재하는 행만 반환
  • outer는 왼쪽테이블 기준으로하며, 왼쪽은 모든 행, 오른쪽은 매칭값없으면 null로

Q. 어떤 상황에서 OUTER JOIN을 사용?

  • 예를 들면, 모든회원을 조뢰할때 주문내역이 없더라도 회원을 출력되게 해야할때
  • 즉, 기준테이블은 항상나와야 하고 연관된 데이터가 없더라도 보여주어야 할떄 사용한다.
profile
welcome

0개의 댓글