기록
database - 집합 연산(UNION, INTERSECT, EXCEPT) 본문
반응형
집합 연산이란?
데이터베이이스에서의 집합은 레코드의 집합을 의미한다.
집합 연산은 레코드끼리 더하거나 빼는, 이른바 레코드 사칙연산이다.
이번 포스팅에서는 테이블 덧셈과 뺄셈을, 다음 포스팅에서는 테이블 결합을 배워보자.
테이블 덧셈 ㅡ UNION (합집합)
UNION은 레코드 덧셈을 수행하는 집합연산자이다.
SELECT goods_id, goods_name
FROM Goods
UNION
SELECT goods_id, goods_name
FROM Goods2
ORDER BY goods_id;
UNION 뿐만 아니라 모든 집합 연산자는 중복 행을 제외한다.
집합 연산의 주의사항
1) 연산 대상이 되는 레코드의 열 수가 같아야 한다. (에러 발생)
2) 덧셈 대상이 되는 레코드의 열이 같은 데이터형일 것 (에러 발생)
-> 어쩔 수 없이 사용해야한다면 이전에 배운 형 변환 함수 CAST 사용
3) ORDER BY는 마지막에 하나만 가능하다
중복 행을 포함하는 집합 연산 ㅡ ALL 옵션
SELECT goods_id, goods_name
FROM Goods
UNION ALL
SELECT goods_id, goods_name
FROM Goods2
ORDER BY goods_id;
테이블 간 공통 부분 선택 ㅡ INTERSECT (교집합)
MySQL에서는 아직 INTERSECT를 지원하지 않는다.
구문은 UNION과 완전 동일하며 중복 행을 포함하고 싶을 경우에는 INTERSECT ALL로 기술하는 것도 같다.
레코드 뺄셈 ㅡ EXCEPT (차집합)
EXCEPT는 뺄셈을 하는 집합연산자이다. 구문은 역시 UNION과 동일하다.
Oracle은 EXCEPT 대신 MINUS를 사용한다. 또한, MySQL은 아직 EXCEPT를 지원하지 않는다.
SELECT goods_id, goods_name
FROM Goods
EXCEPT
SELECT goods_id, goods_name
FROM Goods2;
ORDER BY goods_id;
반응형
'[Study] > Database' 카테고리의 다른 글
database - 관계 나눗셈 (0) | 2019.08.03 |
---|---|
database - 결합(JOIN) (0) | 2019.08.03 |
database - CASE 식 (CASE WHEN , ELSE , END) (0) | 2019.08.02 |
database - 술어 (LIKE, BETWEEN, IS NULL, IN, EXISTS) (0) | 2019.07.31 |
database - 다양한 함수 (날짜함수, 변환함수) (0) | 2019.07.30 |