집합연산자
- SELECT문을 실행하면 해당조건에 맞는 데이터가 조회되며 이 데이터를 데이터 집합(SET)이라 함
- 데이터 집합을 대상으로 수행하는 연산자를 집합연산자라함
- UNION, UNION ALL, INTERSECT, MINUS 등이 제공 됨
- 조인연산을 대신할 수도 있음
- 집합연산자로 연결되는 각 SELECT문의 컬럼의 갯수와 데이터 타입은 일치해야함
- ORDER BY 절은 맨 마지막 SELECT문에서만 사용 가능
- BLOB, CLOB, BFILE타입의 컬럼을 포함 할 수 없다
- UNION,INTERSECT, MINUS에서 LONG타입의 컬럼을 포함 할 수 없음
1.UNION
. 합집합의 결과를 반환
. 각 데이터집합의 원소들이 중복하지 않게 모두 포함된 결과를 반환
✔ 사용예) 장바구니테이블에서 2020년 6월과 7월에 판매된 상품정보를 조회하시오
Alias는 상품코드,상품명,거래처명,매입가,매출가
SELECT A.CART_PROD AS 상품코드,
B.PROD_NAME AS 상품명,
C.BUYER_NAME AS 거래처명,
B.PROD_COST AS 매입가,
B.PROD_PRICE AS 매출가
FROM CART A, PROD B, BUYER C
WHERE A.CART_PROD = B.PROD_ID
AND B.PROD_BUYER = C.BUYER_ID
AND A.CART_NO LIKE '202006%'
UNION
SELECT A.CART_PROD ,
B.PROD_NAME ,
C.BUYER_NAME,
B.PROD_COST,
B.PROD_PRICE
FROM CART A, PROD B, BUYER C
WHERE A.CART_PROD = B.PROD_ID
AND B.PROD_BUYER = C.BUYER_ID
AND A.CART_NO LIKE '202007%'
2.UNION ALL
. 합집합의 결과를 반환
. 각 데이터집합의 중복하지 않게 모두 포함된 결과를 반환
SELECT A.CART_PROD AS 상품코드,
B.PROD_NAME AS 상품명,
C.BUYER_NAME AS 거래처명,
B.PROD_COST AS 매입가,
B.PROD_PRICE AS 매출가
FROM CART A, PROD B, BUYER C
WHERE A.CART_PROD = B.PROD_ID
AND B.PROD_BUYER = C.BUYER_ID
AND A.CART_NO LIKE '202006%'
UNION ALL
SELECT A.CART_PROD ,
B.PROD_NAME ,
C.BUYER_NAME,
B.PROD_COST,
B.PROD_PRICE
FROM CART A, PROD B, BUYER C
WHERE A.CART_PROD = B.PROD_ID
AND B.PROD_BUYER = C.BUYER_ID
AND A.CART_NO LIKE '202007%'
3. INTERSECT
. 교집합의 결과를 반환
✔사용예) 장바구니테이블에서 2020년 6월과 7월에 동시에 판매된 상품정보를 조회하시오
Alias는 상품코드,상품명,거래처명,매입가,매출가
SELECT A.CART_PROD AS 상품코드,
B.PROD_NAME AS 상품명,
C.BUYER_NAME AS 거래처명,
B.PROD_COST AS 매입가,
B.PROD_PRICE AS 매출가
FROM CART A, PROD B, BUYER C
WHERE A.CART_PROD = B.PROD_ID
AND B.PROD_BUYER = C.BUYER_ID
AND A.CART_NO LIKE '202006%'
INTERSECT
SELECT A.CART_PROD ,
B.PROD_NAME ,
C.BUYER_NAME,
B.PROD_COST,
B.PROD_PRICE
FROM CART A, PROD B, BUYER C
WHERE A.CART_PROD = B.PROD_ID
AND B.PROD_BUYER = C.BUYER_ID
AND A.CART_NO LIKE '202007%'
4. MINUS
. 차집합의 결과를 반환
. MINUS 연산자는 사용되는 데이터 SET의 위치에 따라 결과가 달라짐. 즉, A MINUS B <> B MINUS A
✔사용예) 2020년 4월 매입없이 매출만 발생된 상품의 상품번호,상품명을 조회하시오
SELECT DISTINCT B.PROD_ID AS 상품번호,
B.PROD_NAME AS 상품명
FROM CART A, PROD B
WHERE A.CART_PROD=B.PROD_ID
AND A.CART_NO LIKE '202004%'
MINUS
SELECT DISTINCT A.BUY_PROD AS 상품번호,
B.PROD_NAME AS 상품명
FROM BUYPROD A, PROD B
WHERE A.BUY_PROD=B.PROD_ID
AND A.BUY_DATE BETWEEN TO_DATE('20200401') AND TO_DATE('20200430')
'ORACLE 복습 & 정리' 카테고리의 다른 글
[ORACLE] SEQUENCE,동의어 221130-02 (0) | 2022.11.30 |
---|---|
[ORACLE] 계층형 쿼리 221129-03 (0) | 2022.11.30 |
[ORACLE] VIEW 221130-01 (0) | 2022.11.30 |
[ORACLE] DML명령과 서브쿼리 221129-01 (0) | 2022.11.29 |
[ORACLE] 서브쿼리 221128-01 (0) | 2022.11.29 |