DevSSOM

SQL - 집합 연산자 : UNION, UNION ALL, INTERSECT, EXCEPT 본문

DataBase

SQL - 집합 연산자 : UNION, UNION ALL, INTERSECT, EXCEPT

데브쏨 2021. 9. 4. 14:56
반응형

집합 연산자

두 개 이상의 테이블에서 JOIN을 사용하지 않고, 연관된 데이터를 조회하는 방법 중 하나. 테이블에서 SELECT한 컬럼의 수와 각 컬럼의 데이터타입이 테이블 간 서로 호환이 가능해야됨.

 

UNION

두 개의 테이블을 하나로 만드는 연산. 관계형 대수의 일반 집합 연산에서 합집합의 역할. 합친 후에 테이블에서 중복된 데이터는 제거. 이를 위해 UNION은 테이블을 합칠 때 정렬 과정을 발생시킴(하지만 최종 결과에 대해 올바른 정렬을 위해서는 ORDER BY 구문을 사용해야함) 

 

 

UNION ALL

UNION과 거의 같은 기능을 수행함. 다만, ※ UNION과 달리 중복 제거와 정렬을 하지 않음

단순히 데이터를 연결하기만 함.

 

 

INTERSECT

두 개의 테이블에 대해 겹치는 부분을 추출하는 연산. 관계형 대수의 일반 집합 연산에서 교집합의 역할. 추출 후에는 중복된 결과를 제거.

참고로, INTERSECT는 Oracle, Maria DB에서는 지원되지만, MySQL에서는 지원되지 않음. 

 

 

EXCEPT (MINUS)

관계형 대수의 일반 집합 연산에서 차집합의 역할. 두 개의 테이블에서 겹치는 부분을 앞의 테이블에서 제외해서 추출하는 연산. 추출 후에는 중복된 결과를 제거. INTERSECT로 나온 결과물만 빼준다고 생각해도 됨.

참고로, Maria DB에서는 10.3 version부터 지원, Oracle DB에서는 MINUS라는 이름으로 지원, MySQL에서는 지원 안됨.

 

 

 

 

728x90
반응형
댓글