꺄르륵
[Oracle SQL Developer] 기초 XV - 집합연산자 본문
집합연산자
- UNION, UNION ALL, INTERSECT, MINUS 연산자 제공
- UNION 합집합 , UNION ALL 중복포함, INTERSECT 교집합, MINUS 차집합
- JOIN 연산의 기능을 일부 제공할 수 있음
- 집합연산자 사용시 주의할 사항
(1) SELECT 문의 각 컬럼의 데이터 타입과 갯수는 동일 해야한다.
(2) ORDER BY 절은 맨 마지막 SELECT 문에 나와야한다.
(3) 첫 번째 SELECT 문에 사용된 컬럼타입, 갯수, 이름이 기준이 된다.
(4) CLOB, BLOB, BFILE 등으로 정의된 컬럼은 사용할 수 없다.
1. UNION
1.1. 합집합의 개념으로 사용된다.
1.2. 사용형식
: 비교할 컬럼LIST의 갯수가 동일해야한다.
: 비교할 컬럼LIST의 데이터타입이 일치해야한다.
: 비교할 컬럼LIST의 조건이 같아야 동일한 비교 결과가 출력된다.
SELECT 컬럼LIST
FROM 테이블LIST
WHERE 조건
UNION
SELECT 컬럼LIST
FROM 테이블LIST
WHERE 조건;
예) 회원테이블에서 직업이 '자영업'인 회원정보를 조회하시오.
회원번호, 회원명, 마일리지
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_JOB = '자영업';
예) 회원테이블에서 남성회원으로 마일리지가 2000이상인 회원정보를 조회하시오.
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE SUBSTR(MEM_REGNO2,1,1) = '1'
AND MEM_MILEAGE > 2000;
EX) 회원테이블에서 직업이 '자영업'인 회원과 남성회원으로 마일리지가 2000이상인 회원정보를 조회하시오.
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_JOB = '자영업'
UNION
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE SUBSTR(MEM_REGNO2,1,1) = '1'
AND MEM_MILEAGE > 2000;
2. UNION ALL
2.1. 합집합의 결과를 반환한다.
교차부분의 데이터가 중복처리된다.
3. INTERSECT
3.1. 제시된 복수개의 쿼리 결과의 공통된 결과를 반환한다. = 교집합
EX) 장바구니테이블에서 2005년 4월에 판매된 상품이 5월에도 판매된 상품정보를 조회하시오
상품번호, 상품명
SELECT DISTINCT B.CART_PROD AS 상품번호,
A.PROD_NAME AS 상품명
FROM PROD A, CART B
WHERE A.PROD_ID = B.CART_PROD
AND B.CART_NO LIKE '200504%'
INTERSECT
SELECT DISTINCT B.CART_PROD AS 상품번호,
A.PROD_NAME AS 상품명
FROM PROD A, CART B
WHERE A.PROD_ID = B.CART_PROD
AND B.CART_NO LIKE '200506%';
4. MINUS
4.1. A의 결과에서 B의 결과를 제거한 값을 반환한다.
SELECT DISTINCT B.CART_PROD AS 상품번호,
A.PROD_NAME AS 상품명
FROM PROD A, CART B
WHERE A.PROD_ID = B.CART_PROD
AND B.CART_NO LIKE '200504%'
MINUS
SELECT DISTINCT B.CART_PROD AS 상품번호,
A.PROD_NAME AS 상품명
FROM PROD A, CART B
WHERE A.PROD_ID = B.CART_PROD
AND B.CART_NO LIKE '200506%';
'프로그래밍 > DB' 카테고리의 다른 글
[Oracle SQL Developer] 기초 XVII - VIEW (0) | 2019.10.29 |
---|---|
[Oracle SQL Developer] 기초 XVI - DML (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XIV - SUBQUERY (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XIII - OUTERJOIN (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XII - JOIN II (0) | 2019.10.24 |