NULL
집합 연산자 (UNION, UNION ALL, MINUS, INTERSECT) 본문
집합 연산자 UNION
SELECT문을 통해 데이터 조회결과를
하나의 집합과 같이 다룰 수 있는 집합 연산자이다.
2개 이상의 SELECT문의 결과 값을 연결 할때 쓴다.
두 SELECT문 사이에 사용된 UNION 연산자가 바로 집합 연산자이다.
이 연산자는 합집합을 의미하는 연산자이다.
위에 코드를 보면 10번 부서 사원과 20번 부서 사원의 정보가 합쳐져서 출력되었다.
주의할 점
집합연산자로 두 개의 SELECT문의 결과 값을 연결 할 때
각 SELECT문이 출력하려는 열 개수와 각 열의 자료형이 순서별로 일치해야 한다.
만약 연결하려는 두 SELECT문의 열 개수와 자료형이 같다면
서로 다른 테이블에서 조회하거나 조회하는 열 이름이 다른것은
문제가 되지 않는다.
다만 이상해 보이는 결과가 나오겠지만 다음과 같이 사용 할 수도 있다.
또한 열 이름은 맨 앞에 작성했던 SELECT절의 열 이름으로 표기된다.
오라클에서 사용하는 집합 연산자는 다음과 같이 4가지 종류가 존재한다.
종류 | 설명 |
UNION | 연결된 SELECT문의 값을 합집합으로 묶고 중복을 제거한다. |
UNION ALL | 연결된 SELECT문의 값을 합집합으로 묶고 중복값을 그대로 출력한다. |
MINUS | 먼저 작성한 SELECT문의 값에서 다음 SELECT문의 값을 차집합 처리한다. 먼저 작성한 SELECT문의 값 중 다음 SELECT문에 존재하지 않는 데이터만 출력한다. (즉, 데이터 값이 같은 것들은 제외하고 출력한다.) |
INTERSECT | 먼저 작성한 SELECT문과 다음 SELECT문의 값이 같은 데이터만 출력한다. 교집합과 같은 의미다. |
UNION ALL (중복제거 X)
위와 같이 UNION은 중복제거, UNION ALL은 모두출력한다.
둘 다 합집합 연산자이지만 결과 값이 달라지므로 사용 시 주의해야한다.
집합연산자 MINUS
MINUS는 차집합을 의미한다.
다음 코드와 같이 두 SELECT문을 MINUS 연산자로 묶어주면
SELECT문의 결과 값이 같은 데이터를 제외하고
첫번째 SELECT문의 결과 값이 출력된다.
EMP 테이블 전체 행을 조회한 첫번째 SELECT문 결과를 보면
10번 부서에 있는 사원데이터를 제외한 결과 값이 출력된다.
첫번째 SELECT문 데이터에서 두번째 SELECT문 데이터를
제외한 나머지를 보여주는 느낌이다.
집합연산자 INTERSECT
INTERSECT 연산자는 교집합을 의미하는데
두 SELECT문의 결과 값이 같은 데이터만 출력된다.
두 SELECT문에서 EMP테이블 DEPTNO열 값이 10인 데이터만 출력된다.
'SQL > Oracle' 카테고리의 다른 글
문자열 길이 구하는 LENGTH 함수 (0) | 2022.03.16 |
---|---|
대소문자 바꿔주는 문자 함수 (UPPER, LOWER, INITCAP) (0) | 2022.03.16 |
IS NULL연산자 (0) | 2022.03.15 |
LIKE 연산자와 와일드 카드 ESCAPE절 (0) | 2022.03.09 |
BETWEEN 연산자 (0) | 2022.03.09 |