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개의 테이블이 지정됩니다.

sales2005
사람인
조. 1000
알렉스야. 2000
밥. 5000
sales 2006
사람인
조. 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 표시됩니다.

다음 예시는INTERSECTquery는 Orders 테이블에서 모든 행을 반환합니다. 여기서 Query는 수량이 50에서 100 사이입니다.

선택한다. * 부터   주문 어디에   사이에 1 그리고. 100  교차하다  선택한다. * 부터   주문 어디에   사이에 50 그리고. 200; 

EXCEPT 연산자

SQLEXCEPT연산자는 한 쿼리의 개별 행을 취하여 두 번째 결과 집합에 나타나지 않는 행을 반환합니다.행 제거 및 중복 제거를 위해EXCEPT연산자는 를 구별하지 않습니다.NULLs.그EXCEPT ALL연산자는 중복을 제거하지 않지만 첫 번째 쿼리에 X회, 두 번째 쿼리에 Y회 행이 나타나면 결과 세트에 최대- \ 됩니다.

특히 Oracle 플랫폼은MINUSSQL 표준과 기능적으로 동등한 연산자 EXCEPT DISTINCT오퍼레이터.[3]

다음 예시는EXCEPTquery는 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 특수한 순서 

「 」를 참조해 주세요.

레퍼런스

  1. ^ "The UNION [ALL], INTERSECT, MINUS Operators". Oracle. Retrieved 14 July 2016.
  2. ^ "/유니언 모든 의견 기법으로 관리 정비 및 성능에 당신의 큰 데이터 웨어 하우스 환경...이/유니언 모든 기술 문제 시간에 민감한 데이터베이스 설계와 관련된 고객 중 많은 돈을 벌었다.이 데이터베이스는 보통 들어가서 데이터 거의 업데이트됩니다 극심한 환율 변동이 현재 기간, 월 또는 날짜 부분이 있다.다른 컨테이너 직접 접근 기억 장치 할당, tablespaces, 탁자, 지수 정의를 이용하여, 설정에 의해 이러한 다른 변동성 수준에 대한 구체적인 성능 고려 사항에 그리고 주파수 situations."를 업데이트될 수 있다.테라 바이트 데이터 웨어 하우스 표 설계 Choices- 제2부(2006년 7월 25일에서 액세스 하).
  3. ^ 'E071-03',EXCEPT DISTINCT테이블 연산자:사용하다MINUS대신EXCEPT DISTINCT" "Oracle Compliance To Core SQL:2003". Docs.oracle.com. Retrieved 7 July 2022.

외부 링크