728x90
반응형
집합연산자 |
|
UNION, UNION ALL - 합집합 INTERSECT - 교집합 MINUS - 차집합 집합연산자의 제한 조건 - 두 테이블의 컬럼 갯수와 자료형, 나열순서가 같아야 한다. - ORDER BY절(첫번째 쿼리문 기준)은 모든 쿼리문을 다 기술한 뒤 맨 마지막에 한 번만 기술가능하다. - LOB(BLOB, CLOB, BFILE)자료형, LONG자료형에는 사용할 수 없다. |
SELECT DEPTNO, ENAME FROM EMP UNION SELECT DEPTNO, DNAME FROM DEPT ORDER BY ENAME; |
1. UNION : 합집합 - 두 개의 테이블의 데이터를 모두 포함한 결과를 반환함 - 중복을 허용하지 않는다. 중복값은 1개만 표현함. 1-2. UNION ALL : 합집합 - UNION과 거의 다 동일하지만 중복을 허용하여 모두 출력한다. |
SELECT GOODS FROM GOODS_KOR UNION SELECT GOODS FROM GOODS_JAP; |
2. INTERSECT - 교집합 - 두 개의 테이블의 데이터 중 공통된 항목만 반환함. - 중복을 허용하지 않는다. |
SELECT GOODS FROM GOODS_KOR INTERSECT SELECT GOODS FROM GOODS_JAP; |
3. MINUS - 차집합 - 두 개의 테이블의 데이터 중 공통된 항목을 제외한 데이터만 반환하는데, 단 먼저 처리된 테이블의 항목만 반환한다. 나중에 처리된 테이블의 결과는 제외. - 중복을 허용하지 않는다. |
SELECT GOODS FROM GOODS_KOR MINUS SELECT GOODS FROM GOODS_JAP; |
[UNION]--TABLE CREATE TABLE GOODS_KOR ( SEQ NUMBER PRIMARY KEY, COUNTRY VARCHAR2(10), GOODS VARCHAR2(80) NOT NULL ); CREATE SEQUENCE KOR_SEQ NOCACHE; INSERT INTO GOODS_KOR (SEQ, COUNTRY, GOODS) VALUES (KOR_SEQ.NEXTVAL, '한국', '원유제외 석유류'); INSERT INTO GOODS_KOR VALUES (KOR_SEQ.NEXTVAL, '한국', '자동차'); INSERT INTO GOODS_KOR VALUES (KOR_SEQ.NEXTVAL, '한국', '전자집적회로'); INSERT INTO GOODS_KOR VALUES (KOR_SEQ.NEXTVAL, '한국', '선박'); INSERT INTO GOODS_KOR VALUES (KOR_SEQ.NEXTVAL, '한국', 'LCD'); INSERT INTO GOODS_KOR VALUES (KOR_SEQ.NEXTVAL, '한국', '자동차부품'); INSERT INTO GOODS_KOR VALUES (KOR_SEQ.NEXTVAL, '한국', '휴대전화'); COMMIT; SELECT * FROM GOODS_KOR; --TABLE CREATE TABLE GOODS_JAP ( SEQ NUMBER PRIMARY KEY, COUNTRY VARCHAR2(10), GOODS VARCHAR2(80) NOT NULL ); CREATE SEQUENCE JAP_SEQ NOCACHE; INSERT INTO GOODS_JAP VALUES (JAP_SEQ.NEXTVAL, '일본', '자동차'); INSERT INTO GOODS_JAP VALUES (JAP_SEQ.NEXTVAL, '일본', '자동차부품'); INSERT INTO GOODS_JAP VALUES (JAP_SEQ.NEXTVAL, '일본', '화물차'); INSERT INTO GOODS_JAP VALUES (JAP_SEQ.NEXTVAL, '일본', '건설기계'); INSERT INTO GOODS_JAP VALUES (JAP_SEQ.NEXTVAL, '일본', '다이오드'); INSERT INTO GOODS_JAP VALUES (JAP_SEQ.NEXTVAL, '일본', '트랜지스터'); INSERT INTO GOODS_JAP VALUES (JAP_SEQ.NEXTVAL, '일본', '반도체웨이퍼'); COMMIT; SELECT * FROM GOODS_JAP; --[UNION] SELECT GOODS FROM GOODS_KOR UNION SELECT GOODS FROM GOODS_JAP;
GOODS_KOR GOODS_JAP SELECT COUNTRY, GOODS FROM GOODS_KOR UNION SELECT COUNTRY, GOODS FROM GOODS_JAP;
UPDATE GOODS_JAP SET COUNTRY ='한국'; SELECT COUNTRY, GOODS FROM GOODS_KOR UNION SELECT COUNTRY, GOODS FROM GOODS_JAP;
[UNION ALL]
--[UNION ALL] SELECT COUNTRY, GOODS FROM GOODS_KOR UNION ALL SELECT COUNTRY, GOODS FROM GOODS_JAP ORDER BY COUNTRY, GOODS;
--EMPLOYEE_ID별 HISTROY 내역 출력 SELECT EMPLOYEE_ID, JOB_ID FROM EMPLOYEES UNION SELECT EMPLOYEE_ID, JOB_ID FROM JOB_HISTORY ORDER BY EMPLOYEE_ID;
--[INTERSECT]
UPDATE GOODS_KOR SET GOODS='자동차' WHERE SEQ=3; UPDATE GOODS_KOR SET GOODS='자동차부품' WHERE SEQ=4; ROLLBACK; SELECT GOODS FROM GOODS_KOR INTERSECT SELECT GOODS FROM GOODS_JAP;
UPDATE GOODS_JAP SET COUNTRY ='한국' WHERE SEQ=1; UPDATE GOODS_JAP SET COUNTRY ='한국' WHERE SEQ=2; SELECT COUNTRY, GOODS FROM GOODS_KOR INTERSECT SELECT COUNTRY, GOODS FROM GOODS_JAP;
--[MINUS] SELECT GOODS FROM GOODS_KOR MINUS SELECT GOODS FROM GOODS_JAP;
728x90
반응형
'[ORACLE]' 카테고리의 다른 글
[ORACLE] REFERENCE TYPE - TYPE, ROWTYPE (0) | 2024.01.24 |
---|---|
[ORACLE] PL/SQL - ANOYMOUS BLOCK, (0) | 2024.01.24 |
[ORACLE] MERGE (0) | 2024.01.23 |
[ORACLE] PSEUDO - ROWNUM (0) | 2024.01.23 |
[ORACLE] 계정 비밀번호 만료기간 해제 및 변경 (0) | 2024.01.23 |