집합 연산자

수호천사임다·2024년 9월 21일

오라클

목록 보기
13/53

집합 연산자란

  • 2개 이상의 SQL문의 결과를 이용해서 집합을 만드는 연산자

종류

연산자설명
UNION합집합(중복 제외)
UNION ALL합집합(중복 포함)
MINUS차집합
INTERSECT교집합
  • 첫 번째 SELECT문과 두 번쨰 SELECT문의 열의 개수와 각 데이터 타입은 반드시 일치해야 함

합집합 예시

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;

0개의 댓글