개발 & 데이터베이스/DB

[ORACLE] 집합 연산자 종류와 사용 방법 (합집합/교집합/차집합)

K.두부 2021. 12. 11. 17:53
반응형

집한 연산자 정의

두 개 이상의 쿼리 결과를 하나로 결합할 때 사용하는 연산자

 

집합 연산자 종류
집합 연산자 설명
UNION (합집합) 두 개의 쿼리 결과를 더해서 정렬 후 출력 (중복 제거)
UNION ALL (합집합) 두 개의 쿼리 결과를 더해서 정렬없이 출력 (중복 있음)
INTERSECT (교집합) 두 개의 쿼리 결과 중 같은 것만 정렬 후 출력
MINUS (차집합) 앞 쿼리 결과 - 뒤 쿼리 결과를 정렬 후 출력

 

집합 연산자 사용 방법

샘플 데이터 

1. UNION

SELECT *
FROM FOOD
WHERE FOOD_ID > 108

UNION

SELECT *
FROM FOOD
WHERE PARENT_FOOD_ID = 103

UNION 연산자는 두 개의 쿼리 결과를 더해서 중복을 제거한 후에 출력되기 때문에 중복값인 짬뽕과 탕수육이 한 번씩만 출력되는 것을 볼 수 있습니다.

 

2. UNION ALL

SELECT *
FROM FOOD
WHERE FOOD_ID > 108

UNION ALL

SELECT *
FROM FOOD
WHERE PARENT_FOOD_ID = 103

UNION 연산자와 다르게 중복값을 신경쓰지 않기 때문에 중복값인 탕수육과 짬뽕이 두 번씩 출력되는 것을 볼 수 있습니다.

 

3. INTERSECT

SELECT * 
FROM FOOD
WHERE FOOD_ID > 108

INTERSECT

SELECT *
FROM FOOD
WHERE PARENT_FOOD_ID = 103

두 개의 쿼리 결과 중에 중복되는 값인 탕수육과 짬뽕만 출력되는 것을 볼 수 있습니다.

 

4. MINUS

SELECT *
FROM FOOD
WHERE PARENT_FOOD_ID = 103     -- A 쿼리

MINUS

SELECT *
FROM FOOD
WHERE FOOD_ID > 108            -- B 쿼리

A 쿼리 결과(짜짱면, 탕수육, 짬뽕)에서 B 쿼리 결과(짬뽕, 탕수육)을 뺀 결과가 출력되는 것을 볼 수 있습니다.

반응형