조인 외에도 테이블 간의 데이터를 조회하는 방법이 있음.
집합 연산자는 SELECT 문을 여러개 연결하여 작성,
각 SELECT 문의 조회 결과를 하나로 합치거나 분리할 수 있음.
즉, 합집합, 교집합, 차집합과 같음.

OPERATOR DESC KIND
UNION 조회 결과의 합집합. 중복행은 1번만 출력. 합집합
UNION ALL 조회 결과의 합집합. 중복되는 행도 출력. 합집합
INTERSET 조회 결과의 교집합. 중복되는 행만 출력. 교집합
MINUS 첫 번째 조회 결과에서 두 번째 조회 결과를 뺀다. 차칩합
SELECT        열 이름
FROM          테이블 이름
집합 연산자   <---  UNION, UNION ALL, INTERSET, MINUS
SELECT        열 이름
FROM          테이블 이름
[ORDER BY     열 이름 [ASC or DESC]]
  • SELECT 문에서 기술한 열과 두 번째 SELECT 문에서 기술한 열은
    왼쪽부터 순서대로 1 : 1로 대응함,
    열 개수와 데이터 타입이 일치해야 함.
    열의 순서가 다르거나 데이터 타입이 일치하지 않으면 에러남.
  • SELECT 문에 대한 연산은 위에서 아래로 수행됨.
  • ORDER BY 절은 SELECT 문의 맨 끝에 기술함.

UNION

SELECT COUNT(*)
FROM
  (
    SELECT  department_id
    FROM    employees
    UNION
    SELECT  department_id
    FROM    departments
    ORDER BY department_id
  );

UNION ALL

SELECT COUNT(*)
FROM
  (
    SELECT  department_id
    FROM    employees
    UNION ALL
    SELECT  department_id
    FROM    departments
    ORDER BY department_id
  );

INTERSECT

SELECT COUNT(*)
FROM
  (
    SELECT  department_id
    FROM    employees
    INTERXECT
    SELECT  department_id
    FROM    departments
    ORDER BY department_id
  );

MINUS

SELECT COUNT(*)
FROM
  (
    SELECT  department_id
    FROM    departments
    MINUS
    SELECT  department_id
    FROM    employees
    ORDER BY department_id;
  );
728x90
반응형

'Database' 카테고리의 다른 글

[PostgreSQL] sysdate 쓰는법  (0) 2020.02.14
[PostgreSQL] Windows에서 Data Directory 변경하기  (0) 2020.01.09
[SQL] JOIN  (0) 2019.12.27
[SQL] GROUP  (0) 2019.12.26
[SQL] 데이터를 가공하기 위한 DB 함수들  (0) 2019.12.26

+ Recent posts