상세 컨텐츠

본문 제목

[SQL] 테이블 Join 써보기(Inner Join / Outer Join)

PROGRAMMING/DATABASE

by 니콜 키크드만 2025. 8. 5. 21:26

본문

🔍 PostgreSQL에서 INNER JOIN과 OUTER JOIN의 차이점 정리

데이터베이스를 다루다 보면, 테이블 간의 관계를 정의하고 데이터를 연결하는 일이 필수적입니다. 그중에서도 JOIN은 관계형 데이터베이스에서 가장 핵심적인 연산 중 하나입니다. 이번 글에서는 PostgreSQL 기준으로 INNER JOIN과 OUTER JOIN의 차이점을 정리하고, 간단한 예시 및 구문 작성 시 주의할 점까지 함께 다뤄보겠습니다.


✅ 1. INNER JOIN vs OUTER JOIN

📌 INNER JOIN

INNER JOIN양쪽 테이블에 모두 존재하는 데이터만 반환합니다. 즉, 조인 조건을 만족하는 레코드만 결과에 포함됩니다.

📌 OUTER JOIN

OUTER JOIN은 한쪽 테이블에만 존재하더라도 결과에 포함시킵니다. 주로 다음 세 가지로 나뉩니다:

  • LEFT OUTER JOIN: 왼쪽 테이블의 모든 데이터 + 오른쪽 일치 데이터
  • RIGHT OUTER JOIN: 오른쪽 테이블의 모든 데이터 + 왼쪽 일치 데이터
  • FULL OUTER JOIN: 양쪽 테이블의 모든 데이터. 일치하지 않으면 NULL로 채움

🧪 2. 간단한 예시

예시 테이블

-- 테이블 A (users)
id | name  
---|------
1  | Alice  
2  | Bob  
3  | Charlie  

-- 테이블 B (orders)
id | user_id | item  
---|---------|-----
1  | 1       | Book  
2  | 2       | Pen  
3  | 4       | Pencil  

INNER JOIN 예시

SELECT u.name, o.item
FROM users u
INNER JOIN orders o ON u.id = o.user_id;

결과:

name item
Alice Book
Bob Pen

* user_id = 4는 users 테이블에 없으므로 제외됩니다.

LEFT OUTER JOIN 예시

SELECT u.name, o.item
FROM users u
LEFT OUTER JOIN orders o ON u.id = o.user_id;

결과:

name item
Alice Book
Bob Pen
Charlie NULL

🧠 3. SQL 구문 작성 팁

✅ INNER JOIN은 명시적, 암시적 방식 모두 가능

아래 두 방식은 동일한 결과를 반환합니다.

-- 명시적 조인
SELECT *
FROM A
INNER JOIN B ON A.id = B.a_id;

-- 암시적 조인 (WHERE절 이용)
SELECT *
FROM A, B
WHERE A.id = B.a_id;

TIP: 실제 개발에서는

명시적 JOIN 문법 사용을 권장

합니다. 가독성과 명확성이 더 뛰어납니다.

✅ OUTER JOIN은 (+) 기호로도 표현 가능

아래는 Oracle DB에서 사용되는 (+) 스타일입니다. PostgreSQL에서는 직접적으로 사용되지 않지만, SQL JOIN을 공부하는 데 중요한 표현법입니다.

-- Oracle 스타일 (LEFT OUTER JOIN)
SELECT *
FROM A, B
WHERE A.id = B.a_id(+);

📝 마무리

  • INNER JOIN: 양쪽 모두 일치하는 데이터만 반환
  • OUTER JOIN: 일치하지 않아도 포함시킴
  • JOIN 구문: 명시적 사용 권장. 오라클 스타일의 (+) 기호도 이해해둘 것
  • 주의: 실제 사용 시 데이터 누락 및 NULL 처리에 유의할 것

JOIN을 제대로 이해하는 것은 SQL의 기초이자 핵심입니다. 다양한 실습을 통해 개념을 확실히 다져보시기 바랍니다.

반응형

관련글 더보기

댓글 영역