1HOON
논리적 코딩
1HOON
전체 방문자
오늘
어제
  • HOME (186)
    • ☕️ JAVA (28)
      • WhiteShip Java LIVE Study (6)
      • Effective JAVA (10)
    • 🔮 KOTLIN (4)
    • 🌱 SPRING (51)
      • 스프링 인 액션 (22)
      • JPA (18)
    • ☕️ JAVASCRIPT (6)
    • 📃 DATABASE (40)
      • ORACLE (37)
      • MSSQL (2)
    • 🐧 LINUX (4)
    • 🐳 DOCKER (5)
    • 🐙 KUBERNETES (4)
    • 🏗️ ARCHITECTURE (8)
    • 📦 ETC (26)
      • TOY PROJECT (5)
      • RECRUIT (1)
      • 그냥 쓰고 싶어서요 (14)
    • 🤿 DEEP DIVE (1)
    • 🚽 Deprecated (9)
      • PYTHON (3)
      • AWS (2)
      • HTTP 완벽가이드 (3)
      • WEB (1)

블로그 메뉴

  • 홈
  • 방명록
  • 관리

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
1HOON

논리적 코딩

[SQL] 집합 연산자
📃 DATABASE/ORACLE

[SQL] 집합 연산자

2018. 1. 4. 21:39

집합 연산자

데이터 집합을 대상으로 연산을 수행하는 연산자를 말한다. UNION, UNION ALL, INTERSECT, MINUS가 있다.


1. UNION

합집합을 의미한다. 두 개의 데이터 집합이 있을 때, 각 집합의 원소를 모두 포함한 결과를 출력한다.


한국의 수출 품목을 조회해보자.

1
2
3
4
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '한국'
ORDER BY SEQ;
cs



다음으로, 일본의 수출 품목을 조회한다.

1
2
3
4
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '일본'
ORDER BY SEQ;
cs


한국과 일본의 수출품목을 조회해 각각 하나의 데이터 집합을 얻어냈다.

그렇다면, 한국과 일본 모두의 수출품목을 중복값 없이 조회하려면 어떻게 해야할까?


1
2
3
4
5
6
7
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '한국'
UNION
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '일본';
cs



한국과 일본의 수출 품목이 총 20개이지만, 인출된 행은 15개이다.

왜냐면, 한국과 일본의 공통된 수출 품목 5개(선박, 원유제외 석유류, 자동차, 자동차부품, 전자집적회로)가 중복제거되어 하나씩 인출되었기 때문이다.



2. UNION ALL

UNION과 동일하나, 중복된 항목도 중복제거 없이 모두 조회된다.


1
2
3
4
5
6
7
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '한국'
UNION ALL
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '일본';
cs



중복된 행이 제거되지 않았기 때문에, 20개 행이 인출되었다.



3. INTERSECT

교집합을 의미한다. 데이터 집합에서 공통된 항목만 추출해 반환한다.


1
2
3
4
5
6
7
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '한국'
INTERSECT
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '일본';
cs



두 데이터 집합의 공통된 항목 5개가 인출된 것을 확인할 수 있다.



4. MINUS

차집합을 의미한다. 한 데이터 집합을 기준으로 다른 데이터 집합과 공통된 항목을 제외한 결과만 반환한다.

먼저 위치한 SELECT문이 기준이 된다.


1
2
3
4
5
6
7
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '한국'
MINUS
SELECT  GOODS
FROM    EXP_GOODS_ASIA
WHERE   COUNTRY = '일본';
cs



한국의 수출 품목 중 일본에서도 수출하는 품목을 제외한 항목 5개를 출력했다.



5. 집합 연산자의 제한사항

5-1. 집합 연산자로 연결되는 각 SELECT문의 SELECT 컬럼의 개수와 데이터 타입은 일치해야한다.

5-2. 집합 연산자로 SELECT문을 연결할 때 ORDER BY 절은 맨 마지막 문장에서만 사용할 수 있다.

5-3. BLOB, CLOB, BFILE타입의 컬럼에 대해서는 집합 연산자를 사용할 수 없다.

5-4. UNION, INTERSECT, MINUS 연산자는 LONG타입 컬럼에는 사용할 수 없다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'📃 DATABASE > ORACLE' 카테고리의 다른 글

[SQL] 분석 함수  (0) 2018.01.15
[SQL] WITH절과 순환 서브쿼리  (1) 2018.01.15
[SQL] 계층형 쿼리  (0) 2018.01.09
[SQL] 내부조인과 외부조인  (0) 2018.01.08
[SQL] 데이터베이스 객체_시노님(SYNONYM)  (3) 2017.11.11
    '📃 DATABASE/ORACLE' 카테고리의 다른 글
    • [SQL] WITH절과 순환 서브쿼리
    • [SQL] 계층형 쿼리
    • [SQL] 내부조인과 외부조인
    • [SQL] 데이터베이스 객체_시노님(SYNONYM)
    1HOON
    1HOON

    티스토리툴바