[DB] Union vs Union All

2025. 9. 10. 16:10·Computer Science/데이터베이스

Union

Union은 2개 이상의 쿼리 결과 값을 한 번에 조회하기 위해 사용한다.

이때, 중복된 결과는 한 번만 나온다.

(※ Union Distinct은 Union과 동일하다.)

 

사용 방법은 간단하다.

쿼리 사이를 Union을 써서 연결해주기만 하면된다. (SQL은 대소문자 구분X)

select dept_id from employees
union
select dept_id from departments;

 

Union을 쓸 때는 다음 규칙을 따라야 한다.

→ 쿼리의 컬럼 개수가 같아야 한다!

 

그 외의 권장 사항 및 규칙은 다음과 같다.

  1. 컬럼의 각 순서마다 데이터 타입이 동일하도록 하는 것이 좋다.
    ⇒ 타입이 달라도 결과는 함께 나오지만, 의도한 결과를 명확히 나타내기 위해서는 일치시키는 것이 좋다.
  2. 쿼리에서 동일한 순서의 컬럼명이 다르다면, 가장 첫 쿼리의 컬럼명을 사용한다.

[Fit.1-1 데이터 타입이 다른 컬럼 간 union]

 

[Fit.1-2 첫 쿼리의 컬럼명을 사용]

 


 

Union All

 

Union All 역시 2개 이상의 쿼리 결과 값을 한 번에 조회하기 위해 사용한다.

하지만 중복된 결과를 제거하지 않고, 모두 그대로 보여준다.

사용 방법은 쿼리 사이마다 Union All을 써주면 된다.

select dept_id from employees
union all
select dept_id from departments;

 

Union All 결과는 다음과 같다. 중복된 결과가 그대로 결과에 반영된다.

 


 

Union과 Union All은 왜 사용할까?

지금까지 Union과 Union All에 대해서 각각 살펴보았다.

그렇다면 이러한 기능은 왜 사용할까?

 

Join은 책임 분리가 명확한 두 개 이상의 테이블을 하나로 결합하여, 서로 연관된 데이터를 함께 조회할 수 있도록 해준다.

 

반면 Union과 Union All은 구조가 동일한 데이터를 모아, 분리되어 있는 여러 데이터 집합을 한꺼번에 조회할 수 있게 해준다.

예를 들어, 국내 상품 테이블과 해외 상품 테이블이 있다고 하자.
국적 컬럼을 추가하여 한 테이블로 합칠 수도 있지만, 비즈니스 로직상 국내/해외 상품을 분리하여 관리해야 하는 경우도 있다.

이때, Union을 사용하면 두 테이블을 유지하면서도 전체 상품을 한 번에 조회할 수 있다.

 

👏

'Computer Science > 데이터베이스' 카테고리의 다른 글

[DB] 트랜잭션 고립 수준(Transaction Isolation Level)  (0) 2025.09.19
[DB] 공통 테이블 식(CTE)  (0) 2025.09.19
[DB] 트랜잭션(Transaction)  (2) 2025.08.22
[MySQL] JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN  (4) 2025.08.07
[DB] RDBMS vs NoSQL  (0) 2025.06.10
'Computer Science/데이터베이스' 카테고리의 다른 글
  • [DB] 트랜잭션 고립 수준(Transaction Isolation Level)
  • [DB] 공통 테이블 식(CTE)
  • [DB] 트랜잭션(Transaction)
  • [MySQL] JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN
jjangsudiary
jjangsudiary
jjangsudiary 님의 블로그 입니다.
  • jjangsudiary
    jjangsudiary 님의 블로그
    jjangsudiary
  • 전체
    오늘
    어제
    • 분류 전체보기 (81) N
      • 이모저모 (0)
        • 회고 (0)
      • Development (17) N
        • 개발 공부 (14) N
        • 프로젝트 (2)
      • Android (10)
        • Compose (1)
      • AI (15)
      • Computer Science (25)
        • 네트워크 (8)
        • 데이터베이스 (10)
        • 운영체제 (6)
        • 자료구조 (0)
        • 컴퓨터구조 (1)
      • Java (9)
        • 디자인패턴 (2)
      • Spring (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    database
    baekjoon
    운영체제
    프로그래머스
    백준
    안드로이드
    TensorFlow
    딥러닝
    Python
    인공지능
    os
    android
    코딩 테스트
    db
    파이썬
    자바
    Ai
    CS
    머신러닝
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
jjangsudiary
[DB] Union vs Union All
상단으로

티스토리툴바