집합 연산자란?
두 개 이상의 테이블에서 JOIN을 사용하지 않고 연관 데이터를 조회하는 방법 중 하나
두 테이블의 컬럼 수, 컬럼의 데이터타입이 일치해야 한다. (상호 호환 가능)
정렬 기능을 제공하는 경우에도 최종적으로 정렬하는 데에 ORDER BY 를 사용해야 한다.
UNION - 합집합
중복된 데이터를 제거(DISTINCT)하고 정렬
SELECT * FROM TABLE1
UNION
SELECT * FROM TABLE2
;
UNION ALL
UNION과 같은 기능을 수행하나 중복 제거 및 정렬을 하지 않음
SELECT * FROM TABLE1
UNION ALL
SELECT * FROM TABLE2
;
INTERSECT - 교집합
두 테이블의 겹치는 부분을 추출, 중복된 결과를 제거
SELECT A, B FROM TABLE1
INTERSECT
SELECT A, B FROM TABLE2
;
EXCEPT - 차집합
두 테이블에서 겹치는 부분을 앞의 테이블에서 제외하고 추출, 중복된 결과를 제거
MySQL에서는 지원되지 않기 때문에 JOIN등을 활용해야 한다.
SELECT A, B FROM TABLE1
EXCEPT
SELECT A, B FROM TABLE2
;
'Database' 카테고리의 다른 글
[SQL] 계층형 질의 - WITH, CTE (0) | 2024.05.12 |
---|---|
[DB/SQL] 서브쿼리 (0) | 2024.04.07 |
[DB/SQL] 다수의 테이블 제어 - 데이터 그룹 짓기 (0) | 2024.04.07 |
[DB/SQL] 키 Key (0) | 2024.04.07 |
[DB/SQL] 관계형 데이터베이스 쿼리 명령어 - DDL, DML, DCL (1) | 2024.04.07 |