Set Operations(SQL)
Set operations (SQL)설정 작업을 사용하면 여러 쿼리의 결과를 하나의 결과 [1]세트로 결합할 수 있습니다.다음을 포함하는 연산자 설정UNION
,INTERSECT
,그리고.EXCEPT
.
UNION 연산자
SQL에서 절은 두 개의 SQL 쿼리 결과를 모든 일치하는 행의 단일 테이블에 결합합니다.통합하려면 두 쿼리의 열 수와 호환되는 데이터 유형이 같아야 합니다.중복된 레코드는 자동으로 삭제됩니다.UNION ALL
사용됩니다.
UNION
는 테이블이 완전히 [2]정규화되지 않은 데이터 웨어하우스 애플리케이션에서 유용합니다.간단한 예로는 테이블이 있는 데이터베이스를 들 수 있습니다.sales2005
그리고.sales2006
동일한 구조를 가지지만 성능 고려 사항으로 인해 분리됩니다.aUNION
쿼리는 두 테이블의 결과를 결합할 수 있습니다.
주의:UNION ALL
는 행의 순서를 보증하지 않습니다.두 번째 피연산자의 행은 첫 번째 피연산자의 행 앞, 뒤에 나타나거나 첫 번째 피연산자의 행과 혼합될 수 있습니다.특정 순서가 필요한 경우,ORDER BY
사용해야 합니다.
주의:UNION ALL
보통보다 훨씬 빠를지도 모른다UNION
.
예
다음 2개의 테이블이 지정됩니다.
사람인 | 양 |
---|---|
조. | 1000 |
알렉스야. | 2000 |
밥. | 5000 |
사람인 | 양 |
---|---|
조. | 2000 |
알렉스야. | 2000 |
잭 | 35000 |
다음 명령어 실행:
선택한다. * 부터 sales2005 유니온 선택한다. * 부터 sales 2006;
는 이 결과 세트를 생성합니다.단, 행의 순서는 다를 수 있습니다.단,ORDER BY
다음 절이 제공되었습니다.
사람인 | 양 |
---|---|
조. | 1000 |
알렉스야. | 2000 |
밥. | 5000 |
조. | 2000 |
잭 | 35000 |
조에는 두 개의 행이 있습니다. 이러한 행은 열 전체에서 구별되기 때문입니다.Alex 행은 두 열에서 구별되지 않으므로 Alex 행은 하나뿐입니다.
UNION ALL
중복을 제거하지 않기 때문에 다른 결과를 얻을 수 있습니다.다음 명령어 실행:
선택한다. * 부터 sales2005 유니온 모든. 선택한다. * 부터 sales 2006;
이러한 결과를 얻을 수 있습니다.또, 이 결과에서는, 미완성의 결여에 대한 편차가 허용됩니다.ORDER BY
스테이트먼트:
사람인 | 양 |
---|---|
조. | 1000 |
조. | 2000 |
알렉스야. | 2000 |
알렉스야. | 2000 |
밥. | 5000 |
잭 | 35000 |
전체 외부 결합에 대한 설명에서도 다음을 사용하는 예가 있습니다.UNION
.
교차 연산자
SQLINTERSECT
연산자는 두 개의 쿼리 결과를 가져와서 두 결과 집합에 나타나는 행만 반환합니다.중복 제거를 위해INTERSECT
연산자는 를 구별하지 않습니다.NULLs
.그INTERSECT
연산자는 최종 결과 집합에서 중복 행을 제거합니다.그INTERSECT ALL
연산자는 최종 결과 세트에서 중복된 행을 삭제하지 않지만 첫 번째 쿼리에 X회, 두 번째 쿼리에 Y회 표시될 경우 결과 세트에최소 Y \, Y로 표시됩니다.
예
다음 예시는INTERSECT
query는 Orders 테이블에서 모든 행을 반환합니다. 여기서 Query는 수량이 50에서 100 사이입니다.
선택한다. * 부터 주문 어디에 양 사이에 1 그리고. 100 교차하다 선택한다. * 부터 주문 어디에 양 사이에 50 그리고. 200;
EXCEPT 연산자
SQLEXCEPT
연산자는 한 쿼리의 개별 행을 취하여 두 번째 결과 집합에 나타나지 않는 행을 반환합니다.행 제거 및 중복 제거를 위해EXCEPT
연산자는 를 구별하지 않습니다.NULLs
.그EXCEPT ALL
연산자는 중복을 제거하지 않지만 첫 번째 쿼리에 X회, 두 번째 쿼리에 Y회 행이 나타나면 결과 세트에 최대- \ 회 됩니다.
특히 Oracle 플랫폼은MINUS
SQL 표준과 기능적으로 동등한 연산자 EXCEPT DISTINCT
오퍼레이터.[3]
예
다음 예시는EXCEPT
query는 Orders 테이블의 모든 행을 반환합니다. 여기서 Quantity는 1~49이고 Quantity는 76~100입니다.
다른 방식으로 표현됩니다. 쿼리는 수량이 50~75인 행을 제외하고 수량이 1~100인 모든 행을 반환합니다.
선택한다. * 부터 주문 어디에 양 사이에 1 그리고. 100 제외하고 선택한다. * 부터 주문 어디에 양 사이에 50 그리고. 75;
예
다음 예시는 위의 예와 동일하지만, 이 예에서는EXCEPT
교환입니다.
선택한다. o1.* 부터 ( 선택한다. * 부터 주문 어디에 양 사이에 1 그리고. 100) o1 왼쪽 합류하다 ( 선택한다. * 부터 주문 어디에 양 사이에 50 그리고. 75) o2 온 o1.아이디 = o2.아이디 어디에 o2.아이디 IS 특수한 순서
「 」를 참조해 주세요.
레퍼런스
- ^ "The UNION [ALL], INTERSECT, MINUS Operators". Oracle. Retrieved 14 July 2016.
- ^ "/유니언 모든 의견 기법으로 관리 정비 및 성능에 당신의 큰 데이터 웨어 하우스 환경...이/유니언 모든 기술 문제 시간에 민감한 데이터베이스 설계와 관련된 고객 중 많은 돈을 벌었다.이 데이터베이스는 보통 들어가서 데이터 거의 업데이트됩니다 극심한 환율 변동이 현재 기간, 월 또는 날짜 부분이 있다.다른 컨테이너 직접 접근 기억 장치 할당, tablespaces, 탁자, 지수 정의를 이용하여, 설정에 의해 이러한 다른 변동성 수준에 대한 구체적인 성능 고려 사항에 그리고 주파수 situations."를 업데이트될 수 있다.테라 바이트 데이터 웨어 하우스 표 설계 Choices- 제2부(2006년 7월 25일에서 액세스 하).
- ^ 'E071-03',
EXCEPT DISTINCT
테이블 연산자:사용하다MINUS
대신EXCEPT DISTINCT
" "Oracle Compliance To Core SQL:2003". Docs.oracle.com. Retrieved 7 July 2022.