내 잡다한 노트
DB에서 Join 이란? 본문
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 사용 시 주의사항
- Join 조건: 올바른 조건이 없으면 잘못된 데이터 조합(카티션 곱)이 발생할 수 있음.
- 성능 문제:
- Join은 많은 연산을 요구하므로, 대규모 테이블에서는 인덱스 사용이 중요.
- 테이블 관계:
- 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 |