본문 바로가기
DBMS/데이터베이스

[데이터베이스] SQL JOIN문

by 클레어몬트 2025. 2. 6.

INNER JOIN

 

JOIN : 두 개 이상의 테이블을 연결하여 데이터를 조회

데이터베이스는 일반적으로 정규화를 통해 여러 테이블로 분리되므로, 데이터를 효과적으로 활용하기 위해서는 JOIN을 사용하여 테이블 간의 관계를 결합해야 한다.

 

[대표적인 SQL JOIN의 5가지 종류]

1. INNER JOIN

두 테이블에서 공통된 값이 있는 행만 반환한다. 일치하지 않는 데이터는 결과에서 제외된다.

 

(사용 예제)

SELECT A.id, A.name, B.order_id
FROM Customers A
INNER JOIN Orders B ON A.id = B.customer_id;

 

2. LEFT JOIN (LEFT OUTER JOIN)

왼쪽 테이블의 모든 행을 반환하고, 오른쪽 테이블의 일치하는 데이터가 없으면 NULL을 반환한다.

 

(사용 예제)

SELECT A.id, A.name, B.order_id
FROM Customers A
LEFT JOIN Orders B ON A.id = B.customer_id;

 

3. RIGHT JOIN (RIGHT OUTER JOIN)

오른쪽 테이블의 모든 행을 반환하고, 왼쪽 테이블의 일치하는 데이터가 없으면 NULL을 반환한다.

 

(사용 예제)

SELECT A.id, A.name, B.order_id
FROM Customers A
RIGHT JOIN Orders B ON A.id = B.customer_id;

 

4. FULL OUTER JOIN

두 테이블의 모든 행을 반환하며, 일치하는 데이터가 없으면 NULL을 포함한다.

(일부 데이터베이스에서는 FULL OUTER JOIN을 지원하지 않을 수 있다)

 

(사용 예제)

SELECT A.id, A.name, B.order_id
FROM Customers A
FULL OUTER JOIN Orders B ON A.id = B.customer_id;

 

5. CROSS JOIN

두 테이블의 모든 행의 조합(카테시안 곱)을 반환한다.

ON 조건이 없으며, 두 테이블 간의 모든 가능한 조합이 생성된다.

 

(사용 예제)

SELECT A.name, B.product_name
FROM Customers A
CROSS JOIN Products B;

 

 

[JOIN 최적화 전략]

  • 인덱스(Index) 사용: 조인 조건에 사용되는 컬럼에 인덱스를 설정하면 성능이 향상된다
  • 필요한 컬럼만 조회: SELECT * 대신 특정 컬럼을 지정하여 불필요한 데이터 로드를 줄인다
  • 적절한 조인 방식 선택: 데이터 구조와 조회 목적에 맞는 JOIN을 선택하면 성능을 최적화할 수 있다

 

 

 

SQL JOIN은 RDB에서 여러 테이블을 결합하여 유용한 데이터를 추출하는 중요한 기능이다. 각 JOIN의 특성을 이해하고, 데이터의 구조와 조회 목적에 맞게 적절한 조인을 선택하는 것이 중요하다. 이를 통해 데이터의 활용도를 높이고 효율적인 쿼리 성능을 유지할 수 있다.