집합 연산자란
- 2개 이상의 SQL문의 결과를 이용해서 집합을 만드는 연산자
| 연산자 | 설명 |
|---|---|
| UNION | 합집합(중복 제외) |
| UNION ALL | 합집합(중복 포함) |
| MINUS | 차집합 |
| INTERSECT | 교집합 |
SELECT employee_id, first_name FROM employees
WHERE hire_date LIKE '00%'
UNION
SELECT employee_id, first_name FROM employees
WHERE department_id = 20;
다음과 같이 쿼리를 작성하면 first_name과, salary의 데이터 타입이 다르기 때문에
ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다. -> 에러가 뜬다.
집합 연산자를 사용할 때는 데이터 타입이 일치해야 하기 때문에 salary를 TO_CHAR()를 이용하여 문자로 바꿔준다.SELECT employee_id, first_name FROM employees WHERE hire_date LIKE '00%' UNION SELECT employee_id, salary FROM employees WHERE department_id = 20; -- 데이터 타입 변경 후 SELECT employee_id, TO_CHAR(salary) FROM employees WHERE department_id = 20;
SELECT employee_id, first_name FROM employees
WHERE hire_date LIKE '00%'
INTERSECT
SELECT employee_id, first_name FROM employees
WHERE department_id = 20;
SELECT employee_id, first_name FROM employees
WHERE hire_date LIKE '00%'
MINUS
SELECT employee_id, first_name FROM employees
WHERE department_id = 20;