본문 바로가기
 
 
 
카테고리 없음

MySQL에서 조인과 유니온의 5가지 유형: INNER JOIN, LEFT/RIGHT OUTER JOIN, UNION, UNION ALL

by mooonstory 2025. 4. 11.

 
반응형

데이터베이스를 다루는 데 있어 조인유니온은 매우 중요한 개념입니다. MySQL에서도 이 두 가지를 통해 여러 테이블의 데이터를 효과적으로 결합할 수 있습니다. 이번 글에서는 INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, UNION, UNION ALL의 5가지 유형을 자세히 살펴보고, 각각의 사용법과 실용적인 팁을 제공하겠습니다.

1. INNER JOIN

INNER JOIN은 두 테이블에서 공통된 데이터만을 결합하는 방법입니다. 즉, 양쪽 테이블에 모두 존재하는 데이터만 결과로 반환됩니다. 예를 들어, 고객과 주문 테이블을 INNER JOIN으로 결합하면, 주문을 한 고객의 정보만 표시됩니다.

다음은 INNER JOIN의 예시입니다:

고객ID 고객명 주문ID 주문날짜
1 존 스미스 101 2022-01-05
2 제인 도우 102 2022-01-06

이와 같은 쿼리는 다음과 같이 작성할 수 있습니다:

SELECT 고객.고객ID, 고객.고객명, 주문.주문ID, 주문.주문날짜
FROM 고객
INNER JOIN 주문 ON 고객.고객ID = 주문.고객ID;

2. LEFT OUTER JOIN

LEFT OUTER JOIN은 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 일치하는 데이터를 결합합니다. 오른쪽 테이블에 일치하는 데이터가 없을 경우, NULL 값이 반환됩니다.

예를 들어, 고객과 주문 테이블을 LEFT JOIN 하면, 주문이 없는 고객도 포함됩니다:

고객ID 고객명 주문ID 주문날짜
1 존 스미스 101 2022-01-05
2 제인 도우 NULL NULL

쿼리는 다음과 같습니다:

SELECT 고객.고객ID, 고객.고객명, 주문.주문ID, 주문.주문날짜
FROM 고객
LEFT OUTER JOIN 주문 ON 고객.고객ID = 주문.고객ID;

3. RIGHT OUTER JOIN

RIGHT OUTER JOIN은 오른쪽 테이블의 모든 데이터를 반환하고, 왼쪽 테이블의 일치하는 데이터는 포함됩니다. 왼쪽 테이블에 일치하는 데이터가 없을 경우 NULL이 반환됩니다.

예를 들어, 주문과 고객 테이블을 RIGHT JOIN하면, 모든 주문이 포함되고, 주문이 없는 고객은 제외됩니다:

주문ID 주문날짜 고객ID 고객명
101 2022-01-05 1 존 스미스
102 2022-01-06 2 제인 도우

쿼리는 다음과 같습니다:

SELECT 주문.주문ID, 주문.주문날짜, 고객.고객ID, 고객.고객명
FROM 주문
RIGHT OUTER JOIN 고객 ON 주문.고객ID = 고객.고객ID;

4. UNION

UNION은 두 개의 SELECT 쿼리 결과를 결합하여 하나의 결과 집합으로 반환합니다. 두 쿼리의 데이터 형식이 동일해야 하며, 중복된 행은 제거됩니다.

예를 들어, 고객과 공급업체의 이름을 결합할 수 있습니다:

이름
존 스미스
제인 도우
ACME Corp.

쿼리는 다음과 같습니다:

SELECT 고객.고객명 AS 이름 FROM 고객
UNION
SELECT 공급업체.공급업체명 AS 이름 FROM 공급업체;

5. UNION ALL

UNION ALL은 UNION과 유사하지만, 중복된 데이터도 포함하여 반환합니다. 즉, 두 쿼리의 결과를 모두 보여줍니다.

위의 예시에서 UNION ALL을 사용하면 중복된 이름도 포함됩니다:

이름
존 스미스
제인 도우
ACME Corp.
존 스미스

쿼리는 다음과 같습니다:

SELECT 고객.고객명 AS 이름 FROM 고객
UNION ALL
SELECT 공급업체.공급업체명 AS 이름 FROM 공급업체;

실용적인 팁

다음은 MySQL에서 조인과 유니온을 사용할 때 유용한 팁입니다:

1. 인덱스 사용하기

조인 쿼리를 최적화하려면 인덱스를 활용하세요. 테이블의 조인 조건에 사용되는 열에 인덱스를 생성하면 성능이 크게 향상됩니다. 특히 큰 테이블에서 조인 시, 인덱스가 없으면 쿼리 성능이 저하될 수 있습니다.

2. 불필요한 데이터 필터링

조인할 때 필요한 데이터만 선택하세요. SELECT 절에서 필요한 열만 선택하고, WHERE 절을 사용하여 불필요한 행을 필터링하면 데이터 전송량과 처리 시간 모두 줄일 수 있습니다.

3. INNER JOIN과 OUTER JOIN의 차이 이해하기

INNER JOIN과 OUTER JOIN의 개념을 명확히 이해하세요. INNER JOIN은 교집합을 반환하는 반면, OUTER JOIN은 전체 데이터와 일치하는 데이터를 반환합니다. 이를 통해 필요에 따라 적절한 조인 유형을 선택할 수 있습니다.

4. UNION과 UNION ALL의 차이 이해하기

UNION과 UNION ALL의 차이를 이해하고 적절하게 사용하세요. 중복된 데이터를 허용하지 않는 경우 UNION을, 중복된 데이터를 포함해야 하는 경우 UNION ALL을 사용합니다. 이를 통해 데이터 분석의 정확성을 높일 수 있습니다.

5. 쿼리 실행 계획 분석하기

쿼리 성능을 개선하려면 EXPLAIN 명령어를 사용하여 쿼리 실행 계획을 분석하세요. 쿼리가 어떻게 실행되는지 이해하면 성능 병목 지점을 찾아내고 최적화하는 데 도움이 됩니다.

요약 및 실천 팁


MySQL에서 조인과 유니온은 데이터를 결합하고 분석하는 데 필수적인 도구입니다. INNER JOIN, OUTER JOIN, UNION, UNION ALL 각각의 특성과 사용 사례를 이해하고, 성능 최적화를 위한 팁을 적용하면 효율적인 데이터 쿼리를 작성할 수 있습니다.

이제 다음과 같은 실천 팁을 적용해 보세요:

  • 인덱스를 활용하여 조인 성능을 향상시키세요.
  • 필요한 데이터만 선택하여 쿼리 성능을 최적화하세요.
  • INNER JOIN과 OUTER JOIN의 차이를 이해하여 올바른 방법을 선택하세요.
  • UNION과 UNION ALL의 사용 사례를 명확히 이해하여 혼동을 줄이세요.
  • EXPLAIN 명령어로 쿼리 실행 계획을 분석하여 성능을 개선하세요.

이 글을 통해 MySQL에서 조인과 유니온의 다양한 유형을 이해하고, 실제 데이터베이스 작업에서 적용해 보시기 바랍니다. 데이터베이스 쿼리를 최적화하여 더 나은 성과를 이루시기를 바랍니다.

반응형