[개발] 프로그램 지식

[SQL] oracle union 문법, 사용법, 예시, 주의사항

  • -
반응형

Oracle SQL의 UNION 문법: 문법과 사용 예제

UNION 연산자는 Oracle SQL에서 두 개 이상의 SELECT 문을 결합하여 하나의 결과 집합으로 반환하는 데 사용됩니다. 결합된 결과 집합은 기본적으로 중복된 행이 제거됩니다.

SELECT column1, column2, ... FROM table1 UNION SELECT column1, column2, ... FROM table2;

위 문법에서 두 개의 SELECT 문은 같은 수의 열을 가져야 하며, 데이터 타입과 순서도 일치해야 합니다.

  • 중복 제거: 기본적으로 결과 집합에서 중복된 행이 제거됩니다.
  • 정렬되지 않은 데이터: 결과는 기본적으로 정렬되지 않습니다. ORDER BY를 사용하여 정렬해야 합니다.

UNION과 UNION ALL의 주요 차이점은 중복 처리입니다:

  • UNION: 중복된 행을 제거합니다.
  • UNION ALL: 중복된 행을 제거하지 않고 모두 반환합니다.
SELECT column1, column2 FROM table1 UNION ALL SELECT column1, column2 FROM table2;
SELECT first_name, last_name FROM employees WHERE department_id = 10 UNION SELECT first_name, last_name FROM employees WHERE department_id = 20;

위 쿼리는 부서 10과 20에 속한 직원의 이름을 중복 없이 반환합니다.

SELECT first_name, last_name FROM employees WHERE department_id = 10 UNION ALL SELECT first_name, last_name FROM employees WHERE department_id = 20;

위 쿼리는 부서 10과 20에 속한 직원의 이름을 중복을 포함하여 반환합니다.

SELECT first_name, last_name FROM employees WHERE department_id = 10 UNION SELECT first_name, last_name FROM employees WHERE department_id = 20 ORDER BY first_name;

결과는 first_name 기준으로 정렬됩니다. ORDER BY는 전체 UNION 결과에 적용됩니다.

  • 열 수와 데이터 타입: SELECT 문의 열 수와 데이터 타입이 동일해야 합니다.
  • ORDER BY 위치: UNION 뒤에 작성해야 하며, 개별 SELECT 문에서는 사용할 수 없습니다.
  • 중복 제거: 중복 제거는 성능에 영향을 미칠 수 있으므로, 필요하지 않다면 UNION ALL을 사용하세요.
  • UNION ALL 사용: 중복 제거가 필요하지 않을 경우 UNION ALL로 변경하여 성능을 개선합니다.
  • 인덱스 활용: SELECT 문에서 사용된 열에 인덱스를 추가하여 검색 속도를 높입니다.
  • 필터 조건: 각 SELECT 문에서 필터 조건을 사용해 불필요한 데이터를 줄입니다.

Oracle SQL의 UNION 연산자는 여러 SELECT 문을 결합하여 하나의 결과 집합으로 반환하는 강력한 도구입니다. 중복 제거가 필요하다면 UNION을, 중복을 포함한 결과를 원한다면 UNION ALL을 사용하세요. 적절한 사용으로 데이터 조회 성능을 극대화할 수 있습니다.

반응형

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.