내 잡다한 노트

DB에서 Join 이란? 본문

DB

DB에서 Join 이란?

peanutwalnut 2024. 12. 9. 16:32

Join은 데이터베이스에서 여러 테이블의 데이터를 서로 연결하여 하나의 결과 집합으로 만드는 작업을 의미합니다. 테이블 간의 관계를 활용하여 관련 데이터를 조회할 때 사용됩니다.


Join의 필요성

관계형 데이터베이스는 데이터를 정규화하여 여러 테이블로 나누어 저장합니다. 따라서 필요한 데이터를 한 번에 조회하려면 각 테이블을 Join을 통해 연결해야 합니다.

예를 들어:

  • 고객 정보는 customers 테이블에, 주문 정보는 orders 테이블에 분리되어 있을 때, 특정 고객이 한 주문 정보를 조회하려면 두 테이블을 Join해야 합니다.

Join의 종류

다양한 Join 유형이 있으며, 필요한 데이터를 어떤 방식으로 결합할지에 따라 선택됩니다.

1. INNER JOIN (내부 조인)

  • 두 테이블에서 공통된 값이 있는 행만 결과로 반환.
  • 공통된 값을 찾기 위해 주로 ON 절을 사용.

SELECT * 
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;

 

결과:
customers와 orders의 customer_id가 일치하는 행만 반환.

 

2. LEFT JOIN (LEFT OUTER JOIN)

  • 왼쪽 테이블의 모든 행을 반환하며, 오른쪽 테이블에 일치하는 데이터가 없으면 NULL로 채움.

구문:

SELECT * 
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

 

결과:

  • 모든 customers 데이터 반환.
  • orders에서 매칭되지 않는 경우 NULL.

 

3. RIGHT JOIN (RIGHT OUTER JOIN)

  • 오른쪽 테이블의 모든 행을 반환하며, 왼쪽 테이블에 일치하는 데이터가 없으면 NULL로 채움.

구문:

SELECT * 
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;

 

결과:

  • 모든 orders 데이터 반환.
  • customers에서 매칭되지 않는 경우 NULL.

 

4. FULL OUTER JOIN

  • 두 테이블의 모든 행을 반환하며, 일치하지 않는 데이터는 NULL로 채움.

구문:

SELECT * 
FROM customers
FULL OUTER JOIN orders
ON customers.customer_id = orders.customer_id;

 

결과:

  • customers와 orders의 모든 데이터를 반환.
  • 일치하지 않는 행은 NULL.

 

Join 사용 시 주의사항

  1. Join 조건: 올바른 조건이 없으면 잘못된 데이터 조합(카티션 곱)이 발생할 수 있음.
  2. 성능 문제:
    • Join은 많은 연산을 요구하므로, 대규모 테이블에서는 인덱스 사용이 중요.
  3. 테이블 관계:
    • Join의 효율성을 위해 테이블 간의 관계(Primary Key와 Foreign Key)가 잘 정의되어야 함.

 

 

'DB' 카테고리의 다른 글

데이터 정규화(Normalization)  (0) 2024.12.09
Cache의 갱신 방식  (0) 2024.12.09
트랜잭션(Transaction)  (1) 2024.12.09
DB에서 ACID 성질  (0) 2024.12.09