지원되는 버전 :현재 (17) / 16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

롤 토토

이름

선택, 테이블을 선택하십시오 테이블 또는보기

시놉시스

[[recursive]With_Query[, ...]]
[모두 | 뚜렷한 [on (표현 [, ...] ) ] ]
    * | 표현[[as]output_name] [, ...]
    [ 에서from_item[, ...]]
    [ 어디조건]
    [그룹 by표현[, ...]]
    [hade조건[, ...]]
    [ 창문Window_nameas (Window_Definition) [, ...]]
    [Union | 교차 |  [모두 | 별개의 ]롤 토토]
    [주문표현[ASC | desc | 사용운영자] [nulls 첫 번째 | 마지막  ] [, ...] ]
    [ 한계count| 모두  ]
    [오프셋시작[행 | 행]]]
    [Fetch 첫 번째 | 다음  [count] 행 | 줄 전용]
    [update | share [oftable_name[, ...]] [nowait] [...]]여기서from_item|[만]table_name[ *] [[as]alias [ ( column_alias [, ...] ) ] ]
    ( 롤 토토) [as]별칭 [ ( column_alias [, ...] ) ]
    with_query_name[[as]alias [ ( column_alias [, ...] ) ] ]
    function_name ( [ 인수[, ...]) [as]alias [ ( column_alias [, ...] | column_definition [, ...] ) ]
    function_name ( [ 인수[, ...]]) as (column_definition [, ...] )
    from_item[자연]join_type from_item[onjoin_condition| 사용 ( 사용join_column [, ...] ) ]

andWith_QueryIS :

    with_query_name [ ( column_name[, ...])] as (롤 토토 |  | 삽입 | 업데이트 | 삭제)

테이블 [만]table_name [ * ]

설명

롤 토토0에서 행을 검색합니다 더 많은 테이블. 의 일반적인 처리롤 토토다음과 같습니다.

  1. with목록은입니다 계산. 이것들은 효과적으로 임시 테이블 역할을합니다 에서 참조 할 수 있습니다.From목록. 에이with더 참조되는 쿼리 한 번도From만 계산됩니다 한 번. (보다아래.)

  2. From목록은입니다 계산. (의 각 요소From목록은 실제 또는 가상 테이블입니다.) 둘 이상의 요소가 에 지정됨목록입니다 함께 교차 조명. (보다From Clause아래.)

  3. 여기서조항이 지정되어 있습니다. 조건을 충족하지 않는 모든 행이 제거됩니다. 출력에서. (보다어디서 절아래.)

  4. 그룹 by절은입니다 지정된 출력은 하나 이상의 값으로 일치합니다. 인 경우절이 있으면 그룹이 제거됩니다 주어진 조건을 만족시키지 않습니다. (보다그룹 별 그룹and아래.)

  5. 실제 출력 행은를 사용하여 계산됩니다.롤 토토선택한 각각의 출력 표현식 행 또는 행 그룹. (보다목록 선택아래.)

  6. 별도의 선택제거 결과에서 중복 행.선택 뚜렷한모든 일에 일치하는 행을 제거합니다 지정된 표현식.모두 선택(기본값)는 포함 된 모든 후보 행을 반환합니다 복제. (보다고유 한 조항아래.)

  7. 연산자 사용Union, 교차제외, 하나 이상의 출력롤 토토진술을 결합하여 a를 형성 할 수 있습니다 단일 결과 세트. 그만큼Union운영자는 하나 또는 둘 다에있는 모든 행을 반환합니다. 결과 세트. 그만큼교차연산자 두 결과 세트 모두에 엄격하게있는 모든 행을 반환합니다. 그만큼제외운영자는 행을 반환합니다 첫 번째 결과 세트에 있지만 두 번째 결과는 아닙니다. ~ 안에 세 가지 경우 모두, 중복 행이 제거되지 않으면all지정되어 있습니다. 소음 단어별도의명시 적으로 추가 할 수 있습니다 중복 행 제거를 지정하십시오. 주석별도의여기서도 기본 동작입니다 그렇지만all기본값은입니다.롤 토토자체. (보다Union 조항, 교차 절절을 제외하고아래.)

  8. 주문 by절은입니다 지정된 반환 된 행은 지정된 것으로 정렬됩니다 주문하다. 만약에주문 by는 주어지지 않습니다 시스템이 가장 빠르게 찾는 순서대로 행이 반환됩니다. 생산합니다. (보다주문별 주문아래.)

  9. Limit(또는Fetch First) 또는오프셋조항이 지정되어 있습니다.롤 토토Statement는 하위 집합 만 반환합니다 결과 행. (보다한계 조항아래.)

  10. if업데이트또는공유지정되어 있습니다.롤 토토Statement는 선택한 행을 잠그십시오 동시 업데이트에 대해. (보다업데이트/공유 절아래.)

당신은 있어야합니다롤 토토특권 on A에 사용 된 각 열롤 토토명령. 사용업데이트또는공유요구업데이트특권 (각 테이블의 최소 한 열). 선택된).

매개 변수

with

thewith조항이 허용됩니다 이름으로 참조 할 수있는 하나 이상의 하위 쿼리를 지정합니다. 기본 쿼리에서. 하위 쿼리는 효과적으로 작용합니다 1 차 기간 동안 임시 테이블 또는보기 질문. 각 하위 쿼리는 일 수 있습니다.롤 토토, , 삽입, 업데이트또는삭제진술. 쓸 때 데이터 수정 문 (삽입, 업데이트또는삭제) inwith, 그것은입니다 평소 a반환절. 의 출력입니다.반환, not기본 진술이 수정 한 표는 임시를 형성합니다 기본 쿼리에서 읽는 테이블. 만약에반환생략되었으며, 그 진술은 여전히 ​​있습니다 실행되었지만 출력을 생성하지 않으므로 참조 할 수 없습니다. 기본 쿼리의 테이블로.

이름 (스키마 자격이없는)을 지정해야합니다 각with쿼리. 선택적으로, 목록 열 이름을 지정할 수 있습니다. 이것이 생략되면 열입니다 이름은 하위 쿼리에서 추론됩니다.

if재귀지정되어 있습니다 허용롤 토토서브 쿼리 참조 이름으로 그 자체. 그러한 하위 퀘스트에는 양식이 있어야합니다

non_recursive_termUnion [All | 별개의 ]recursive_term

재귀 자체 참조가 표시되어야합니다 의 오른쪽Union. 단 하나 쿼리 당 재귀 자체 참조가 허용됩니다. 재귀 데이터 수정 문은 지원되지 않지만 사용할 수 있습니다 재귀의 결과롤 토토데이터 수정 문의 쿼리. 보다섹션 7.8예를 들어.

의 또 다른 효과재귀with쿼리를 주문할 필요는 없습니다 쿼리는 나중에 목록에있는 다른 것을 참조 할 수 있습니다. (그러나 원형 참조 또는 상호 재귀는 그렇지 않습니다 구현.) 없음재귀, with쿼리 만 참조 할 수 있습니다 형제자매with이전의 쿼리 에서with목록.

의 주요 속성with쿼리입니다 기본 실행 당 한 번만 평가됩니다. 기본 쿼리가 두 번 이상 참조하더라도 쿼리. 특히, 데이터 수정 진술은 보장됩니다 기본 여부에 관계없이 한 번만 한 번만 실행 쿼리는 모든 출력을 읽습니다.

기본 쿼리 및with쿼리는 모두 (개념적으로) 동시에 실행됩니다. 이것 데이터 수정 문의 효과를 암시합니다.with다른 부분에서 볼 수 없습니다 쿼리의 쿼리를 읽는 것 외에반환출력. 그러한 데이터 수정이있는 경우 진술은 동일한 행을 수정하려고 시도하면 결과는 다음과 같습니다. 지정되지 않은.

참조PostgreSQL : 문서 : 9.2 : 롤 토토와 함께 (공통 테이블 표현식)추가 정보.

From

theFrom조항은 하나를 지정합니다 더 많은 소스 테이블롤 토토. 만약에 여러 소스가 지정되고 결과는 직교입니다 모든 출처의 제품 (크로스 조인). 그러나 보통 반품을 제한하기 위해 자격 조건이 추가됩니다 직교 제품의 작은 부분 집합에 행.

the23216_23222절을 포함 할 수 있습니다 다음 요소 :

table_name

기존의 이름 (선택적으로 스키마 자격) 테이블 또는보기. 만약에전용is 테이블 이름 앞에 지정되면 해당 테이블 만 있습니다 스캔. 만약에전용그렇지 않습니다 지정, 테이블 및 모든 후손 테이블 (if 어떤)은 스캔됩니다. 선택적으로,*테이블 이름 뒤에 명시 적으로 지정할 수 있습니다 후손 테이블이 포함되어 있음을 나타냅니다.

alias

대체 이름From별칭이 포함 된 항목. 별칭 간결하거나 모호성을 제거하는 데 사용됩니다 selfjoins (동일한 테이블이 다중 스캔됩니다 타임스). 별칭이 제공되면 완전히 숨 깁니다 테이블 또는 기능의 실제 이름; 예를 들어 주어진FOO에서 foo as f, 나머지롤 토토필수 이것을 참조하십시오From항목 asfnotfoo. 별칭이 작성된 경우 열이 있습니다 별칭 목록은 대체물을 제공하기 위해 작성할 수도 있습니다 테이블의 하나 이상의 열에 대한 이름.

롤 토토

a sub롤 토토그만큼From절. 이것은 출력은 임시 테이블로 생성되었지만 이 싱글의 지속 시간롤 토토명령. 주목하십시오 보결-롤 토토로 둘러싸여 있어야합니다 괄호 및 별칭필수그것을 제공하십시오. 에이롤 토토 : 문서 : 9.2 : 값명령도 가능합니다 여기에 사용.

with_query_name

A with쿼리가 참조됩니다 마치 쿼리의 이름이 테이블 이름. (사실,with쿼리는 같은 이름의 실제 테이블을 숨 깁니다. 기본 쿼리의 목적. 필요한 경우 가능합니다 같은 이름의 실제 테이블을 참조하십시오. 스키마의 이름을 테이블 이름을 알 수 있습니다.) 별명이 될 수 있습니다 테이블과 같은 방식으로 제공됩니다.

function_name

함수 호출이에 나타날 수 있습니다From절. (이것은 특히 유용합니다 결과 세트를 반환하는 함수의 경우 사용될 수 있습니다.) 이것은 출력이 생성 된 것처럼 작동합니다. 이 싱글 기간 동안 임시 테이블로롤 토토명령. 별칭은 할 수 있습니다 또한 사용됩니다. 별칭이 작성된 경우 열 별명 목록입니다 하나의 대체 이름을 제공하기 위해 작성할 수 있습니다. 또는 함수의 복합 리턴의 더 많은 속성 유형. 함수가 반환되는 것으로 정의 된 경우레코드데이터 유형, 그런 다음 별칭 또는 키워드as있어야합니다. 양식의 열 정의 목록이 뒤 따릅니다( column_name data_type [, ... ] ). 열 정의 목록이 있어야합니다 반환 된 실제 수와 열의 유형과 일치합니다. 함수.

join_type

중 하나

  • [내부] 조인

  • 왼쪽 [외부] 조인

  • 오른쪽 [외부] 조인

  • 전체 [외부] 조인

  • 크로스 조인

내부and외부결합 유형, 조인 조건이 있어야합니다 지정, 즉 정확히천연, onjoin_condition또는사용 ( 사용join_column [, ...]). 보다 의미를 위해 아래. 을 위한크로스 가입하다,이 조항 중 어느 것도 나타날 수 없습니다.

A Join조항 결합 2From항목. 괄호를 사용하십시오 중첩 순서를 결정하는 데 필요합니다. 에서 괄호의 부재,Joins 왼쪽에서 오른쪽으로 둥지. 어쨌든Join쉼표보다 더 단단히 바인딩합니다 분리From품목.

크로스 조인and내부 조인간단한 직교를 생산합니다 제품, 두 가지를 나열하여 얻은 것과 동일한 결과 최상위 수준의 항목From, 그러나 조인 조건 (있는 경우)에 의해 제한됩니다.크로스 조인내부 조인 on (true), 즉 행이 없습니다 자격으로 제거. 이 결합 유형은 a입니다 그들이 당신을하지 않기 때문에 표기법 편의성 평원으로 할 수 없음From여기서.

왼쪽 외부 조인모든 것을 반환합니다 자격을 갖춘 직교 제품의 행 (즉, 모두 결합 조건을 통과하는 결합 행)와 하나 왼쪽 테이블에있는 각 행의 사본 조인 조건을 통과 한 오른쪽 행이 아닙니다. 이 왼쪽 줄은 오른쪽에 null 값을 삽입하여 테이블에 결합했습니다 열. 만 참고Join조항 자체 조건은 결정하는 동안 고려됩니다 행에는 일치합니다. 외부 조건이 적용됩니다 나중에.

반대로,오른쪽 외부 조인결합 된 모든 행을 반환하고 각각 1 행을 반환합니다. 타의 추종을 불허하는 오른쪽 줄 (널에 널으로 확장되었습니다 왼쪽). 이것은 당신이기 때문에 단지 표기법 편의입니다 로 변환 할 수 있습니다.왼쪽 외부 가입하다왼쪽 및 오른쪽 입력을 전환하여.

전체 외부 조인모든 것을 반환합니다 결합 된 행, 타의 추종을 불허하는 각 행 왼쪽 줄 (오른쪽에 널으로 연장), 플러스 타의 추종을 불허하는 각각의 오른쪽 행에 한 줄 (연장 왼쪽의 널).

onjoin_condition

join_conditionis 유형의 값을 초래하는 표현부울(A와 유사여기서절) 조인은 일치하는 것으로 간주됩니다.

사용 ( 사용join_column [, ...] )

양식의 조항사용 (A, B, ...)on left_table.a = right_table.a 및 left_table.b = right_table.b .... 또한,사용| 각 쌍 중 하나만 암시합니다 동등한 열의 조인지에 포함됩니다 출력, 둘 다가 아닙니다.

천연

천연a의 속기입니다.사용모든 것을 언급하는 목록 이름이 일치하는 두 테이블의 열. 만약에 공통 열 이름이 없습니다.천연on true.

여기서

선택 사항어디절은 일반 양식

여기서조건

어디조건유형의 결과로 평가하는 표현부울. 이것을 만족시키지 않는 행 출력에서 조건이 제거됩니다. 행이 만족합니다 실제 행 값이있을 때 true가 반환되는 경우 조건 변수 참조로 대체되었습니다.

그룹 by

선택 사항그룹 by절은 일반 양식

그룹 by표현 [, ...]

그룹 bya에 응축됩니다 단일 행에 동일한 값을 공유하는 모든 선택된 행 그룹화 된 표현.표현입력 열 이름 또는 이름 또는 서수 번호 일 수 있습니다. 출력 열 (롤 토토목록 항목), 또는 입력-열 값으로부터 형성된 임의의 표현. ~ 안에 모호한 사례, a그룹 by이름 will be interpreted as an input-column name rather than an 출력 열 이름.

집계 함수가 사용되는 경우 계산됩니다 각 그룹을 구성하여 별도의 값을 생성합니다. 각 그룹 (그룹 by, 집계는 모든에서 계산 된 단일 값을 생성합니다. 선택된 행). 언제그룹 byIS 현재, 그것은에 유효하지 않습니다.롤 토토그룹화되지 않은 목록 표현식 집계 함수 내 또는 그룹이없는 경우를 제외한 열 열은 그 이후로 그룹화 된 열에 기능적으로 의존합니다 그렇지 않으면 반품 할 수있는 값이 둘 이상있을 것입니다. 그룹화되지 않은 열의 경우. 기능적 의존성이 존재합니다 그룹화 된 열 (또는 그 하위 세트)은 다음의 기본 키입니다. 그룹화되지 않은 열이 들어있는 테이블.

선택 사항절은 일반 양식

조건

여기서조건동일합니다 에 지정된대로여기서절.

그룹 행을 제거합니다 조건을 만족시키지 마십시오.어디: 어디이전의 개별 행을 필터링합니다 의 적용그룹 by, while필터 그룹 행에 의해 생성 된그룹 by. 참조 된 각 열조건명백히 말해야합니다 참조가 나타나지 않는 한 그룹화 열을 참조하십시오 집계 기능 내에서.

의 존재a 없는 경우에도 그룹화 된 쿼리로 쿼리그룹 by절. 이것은 무엇과 동일합니다 쿼리에 집계 함수가 포함되어 있지만 아니요가 발생합니다.그룹 by절. 선택한 모든 행 단일 그룹을 형성하는 것으로 간주되고롤 토토List and절은 집계 내에서 표 열만 참조 할 수 있습니다 기능. 이러한 쿼리는이면 단일 행을 방출합니다.조건은 true, 0 인 경우 사실이 아닙니다.

선택 사항절은 일반 양식

Window_nameas (Window_definition ) [, ...]

여기서Window_name이름입니다 에서 참조 할 수 있습니다.Over조항 또는 후속 창 정의 및Window_definitionis

[ 기존_window_name]
[파티션표현[, ...]]
[주문표현[ASC | desc | 사용운영자] [nulls 첫 번째 | 마지막  ] [, ...] ]
[frame_clause ]

IF an기존_window_name지정되어 있습니다.목록; 새로운 창이 복사합니다 해당 항목의 분할 조항 및 주문 조항이있는 경우. 이 경우 새 창이 지정할 수 없습니다 소유하다파티션 by조항 지정주문 by복사 한 경우에만 창에는 하나가 없습니다. 새 창은 항상 자신의 창을 사용합니다 프레임 조항; 복사 된 창은 프레임을 지정해서는 안됩니다 절.

의 요소파티션 by목록은 A의 요소와 거의 같은 방식으로 해석됩니다그룹 by 절, 항상 간단한 표현이라는 점을 제외하고 출력 열의 이름 또는 번호는 없습니다. 또 다른 차이점은 이러한 표현이 집계를 포함 할 수 있다는 것입니다 정기적으로 허용되지 않는 함수 호출그룹 by절. 그들은 여기에서 허용됩니다 윈도우는 그룹화 및 집계 후에 발생합니다.

마찬가지로,의 요소주문 에 의해목록은 거의 같은 방식으로 해석됩니다 AN의 요소주문별 주문표현은 항상 간단한 표현으로 간주됩니다 출력 열의 이름이나 번호는 절대 없습니다.

선택 사항frame_clause정의창 프레임창 프레임에 의존하는 함수 (모두가 아니라). 창 프레임은 쿼리의 각 행에 대한 관련 행 세트입니다. (이라고 함)현재 행). 그만큼frame_clause|

범위 | 줄frame_start범위 | 줄 사이의frame_startandframe_end

여기서frame_startframe_end|

미리 알려지지 않은value선행
현재 행value다음
무한한 추종

ifframe_end생략되었습니다 기본값으로현재 행. 제한 그게frame_start무한한 추종, frame_end미리 알려지지 않은frame_end선택은 이전에 나타날 수 없습니다 위의 목록보다frame_start선택 - 예를 들어현재 행과 사이의 범위value선행허용되지 않습니다.

기본 프레임 옵션은입니다.범위 미리 알려지지 않은,전신과 전류 사이의 범위 열; 파티션의 모든 행으로 프레임을 설정합니다. 현재 행의 마지막 동료를 통해 시작합니다주문 by주문 (거기에있는 경우 모든 행을 의미합니다 아니에요주문 by). 일반적으로미리 알려지지 않은프레임은 파티션의 첫 번째 행에서 시작하며 마찬가지로무한한 추종프레임은 파티션의 마지막 행으로 끝납니다 (범위또는모드). 안에모드,현재 행는 프레임이 시작되거나 끝을 의미합니다 현재 행으로; 그러나에서범위모드는 프레임이 전류로 시작되거나 끝내는 것을 의미합니다. 행의 첫 번째 또는 마지막 동료주문 에 의해주문. 그만큼value 선행andvalue 다음케이스는 현재 만 허용됩니다모드. 그들은 프레임이 시작된다는 것을 나타냅니다 또는 전류 전후에 많은 행이있는 행으로 끝납니다. 열.value정수 여야합니다 변수가 포함되지 않은 표현, 집계 함수, 또는 창 함수. 값은 무효가되어서는 안됩니다. 그러나 현재 행 자체를 선택하는 0이 될 수 있습니다.

옵션이 가능합니다 이면 예측할 수없는 결과를 생성합니다.주문 에 의해주문은 행을 고유하게 주문하지 않습니다. 그만큼범위옵션은 보장하도록 설계되었습니다 의 동료 인 행주문 에 의해주문은 똑같이 처리됩니다. 두 개의 피어 행이있을 것입니다 둘 다 프레임에 있지 않거나 둘 다.

A의 목적절은입니다 의 동작을 지정하려면창 기능쿼리에 나타나목록 선택또는주문별 주문. 이러한 기능은를 참조 할 수 있습니다.조항의 이름으로 estries오버조항. 에이조항 입력은 필요하지 않습니다 그러나 어디서나 참조; 쿼리에 사용되지 않은 경우 단순히 무시됩니다. 창 함수를 사용할 수 있습니다 아무것도없이전혀 조항, 창 함수 호출은 창 정의를 지정할 수 있으므로 직접Over절. 하지만, 그만큼조항은 언제 입력을 저장합니다 둘 이상의 창에 동일한 창 정의가 필요합니다. 기능.

창 함수는에 자세히 설명되어 있습니다.섹션 3.5, 섹션 4.2.8섹션 7.2.4.

롤 토토목록

the롤 토토목록 (키 사이 단어롤 토토andFrom) 출력을 형성하는 표현식을 지정합니다 의 줄롤 토토진술. 그만큼 표현은 계산 된 열을 참조 할 수 있습니다 (일반적으로 수행) 그만큼From조항

테이블에서와 마찬가지로 A의 모든 출력 열롤 토토이름이 있습니다. 단순하게롤 토토이 이름은 단지 레이블에 사용됩니다 디스플레이를위한 열이지만롤 토토더 큰 쿼리의 하위 쿼리입니다 더 큰 쿼리에 의해 이름은 다음의 열 이름으로 표시됩니다. 하위 쿼리에서 생성 된 가상 테이블. 이름을 지정합니다 출력 열에 사용, 쓰기as output_name열후 표현. (생략 할 수 있습니다as원하는 출력 이름이 일치하지 않으면PostgreSQL키워드 (참조부록 C). 보호를 위해 향후 키워드 추가에 대해서는 권장됩니다 당신은 항상 쓰기as또는 출력 이름을 두 배로 인용합니다.) 열을 지정하지 않는 경우 이름, 이름은에 의해 자동으로 선택됩니다.PostgreSQL. 칼럼의 표현이 있다면 간단한 열 참조 및 선택한 이름은 다음과 같습니다. 그 칼럼의 이름. 더 복잡한 경우 기능 또는 유형 이름이 사용될 수 있거나 시스템이 생성 된 A에 떨어질 수 있습니다. 와 같은 이름? 컬럼?.

출력 열 이름을 사용하여 열을 참조 할 수 있습니다. 가치주문 by그룹 by조항이지만여기서또는조항; 거기에서 대신 표현을 작성해야합니다.

46227_46255*할 수 있습니다 출력 목록에 모든 열에 대한 속기로 작성 선택된 행의. 또한 쓸 수 있습니다table_name.*AS 그 테이블에서 나오는 열에 대한 속기. ~ 안에 이 경우로 새 이름을 지정할 수 없습니다.as; 출력 열 이름이됩니다 테이블 열 이름과 동일합니다.

별도의

if별도의 선택지정되어 있습니다. 모든 중복 행은 결과 세트에서 제거됩니다 (한 행은 중복의 각 그룹에서 보관).선택 모두반대를 지정합니다 : 모든 행은 유지됩니다. 그것이 기본.

별개의 선택 (표현 [, ...] )주어진 표현식이있는 각 행 세트의 첫 번째 줄 동등하게 평가하십시오. 그만큼별개의표현식은와 동일한 규칙을 사용하여 해석됩니다.주문 by(위 참조)."First Row"47559_47602주문 by가 사용됩니다 원하는 행이 먼저 나타나는지 확인합니다. 예를 들어:

(위치) 위치, 시간, 보고서에서 별개의 선택을 선택하십시오
    Weather_Reports에서
    위치별로 주문, 시간 desc;

각 위치에 대한 최신 날씨 보고서를 검색합니다. 하지만 우리가 사용하지 않았다면주문 byto 각 위치에 대한 내림차순 시간 값을 강제로 각각에 대한 예측할 수없는 시간으로부터 보고서를 받았습니다. 위치.

the별개의표현은해야합니다 가장 왼쪽 일치주문 by표현. 그만큼주문 by절 일반적으로 결정하는 추가 표현식이 포함됩니다 각 내에서 원하는 행의 우선 순위별개의그룹.

Union

theUnion절은이 장군을 가지고 있습니다 형태:

롤 토토_statementUnion [All | 별개의 ]롤 토토_statement

롤 토토_statement롤 토토주문 by, Limit, 업데이트또는공유하다절. (주문 byandLimita 괄호로 둘러싸인 경우 하위 표현. 없이 괄호,이 조항은 결과에 적용되도록 촬영됩니다. 의Union오른쪽이 아닙니다 입력 표현식.)

theUnion운영자는 세트를 계산합니다 관련 줄의 노동 조합롤 토토진술. 행은 정해진 연합에 있습니다 결과 중 하나 이상에 나타나면 두 가지 결과 세트 세트. 두롤 토토진술 의 직접 피연산자를 나타냅니다.Union동일한 수의 열을 생성해야합니다. 해당 열은 호환 데이터 유형이어야합니다.

결과의 결과Union그렇지 않습니다 가 아닌 한 중복 행을 포함합니다.all옵션이 지정되었습니다.all중복 제거를 방지합니다. (그러므로,Union All보통입니다 보다 훨씬 빠릅니다.Union; 사용all가능할 때.)별도의명시 적으로 지정하도록 작성할 수 있습니다 중복 행을 제거하는 기본 동작.

다중Union같은롤 토토명령문이 평가됩니다 괄호로 달리 명시되지 않는 한 왼쪽에서 오른쪽으로.

현재,업데이트and공유도 지정할 수 없습니다 AUnion결과 또는 입력 에이Union.

Intersect

theIntersect절은 이것을 가지고 있습니다 일반 양식 :

롤 토토_statement교차 [All | 별개의 ]롤 토토_statement

롤 토토_statement롤 토토주문 by, Limit, 업데이트또는공유하다조항

the교차운영자가 관련 줄의 교차점을 설정롤 토토진술. 행이 안에 있습니다 두 결과 모두에 나타나면 두 결과 세트의 교차점 세트.

결과의 결과Intersect그렇지 않습니다 가 아닌 한 중복 행을 포함합니다.all옵션이 지정되어 있습니다. 와 함께all,있는 행m왼쪽 테이블의 복제 및n오른쪽 테이블의 복제 MIN ( 나타납니다.m,n) 결과 세트의 시간 시간.별개의명시 적으로 지정하도록 작성할 수 있습니다 중복 행을 제거하는 기본 동작.

다중Intersect같은롤 토토명령문이 평가됩니다 괄호가 달리 지시하지 않는 한 왼쪽에서 오른쪽으로.Intersect|Union. 즉,연합 b 교차 c|연합 (b 교차 c).

현재,업데이트and공유를 지정할 수 없습니다 forIntersect결과 또는 어떤 것도 입력Intersect.

제외

the제외절은이 장군이 있습니다 형태:

롤 토토_statement[모두 | 별개의 ]롤 토토_statement

롤 토토_statement롤 토토주문 by, Limit, 업데이트, 또는공유하다절.

the제외운영자는 다음을 계산합니다 왼쪽 결과에있는 행 세트롤 토토성명서는 그렇지 않습니다 맞습니다.

결과제외그렇지 않습니다 가 아닌 한 중복 행을 포함합니다.all옵션이 지정되어 있습니다. 와 함께all,있는 행m왼쪽 테이블의 복제 및n오른쪽 테이블의 복제 max (가 나타납니다.m-n, 0) 결과 세트에서 횟수별개의명시 적으로 지정하도록 작성할 수 있습니다 중복 행을 제거하는 기본 동작.

다중제외같은롤 토토명령문이 평가됩니다 괄호가 달리 지시하지 않는 한 왼쪽에서 오른쪽으로.제외|Union.

현재,업데이트공유를 지정할 수 없습니다 for제외결과 또는 입력 의제외.

주문 by

선택 사항주문 by절은 이 일반적인 형태 :

주문 by표현[ASC | desc | 사용운영자] [nulls 첫 번째 | 마지막  ] [, ...]

the주문 by절의 원인 지정된 것에 따라 정렬 할 결과 행입니다 표현 (들). 두 행이 가장 왼쪽에 따라 동일하다면 발현, 그들은 다음 표현에 따라 비교된다 등. 그들이 지정된 모든 것에 따라 동일하다면 표현식은 구현 의존적으로 반환됩니다 주문하다.

표현출력 열의 이름 또는 서수 번호 (롤 토토목록 항목) 또는 임의 일 수 있습니다 입력-열 값에서 형성된 표현.

서수 번호는 서수를 나타냅니다 (왼쪽에서 오른쪽으로) 출력 열의 위치. 이 기능은 가능합니다 그렇지 않은 열을 기준으로 순서를 정의합니다. 독특한 이름이 있습니다. 이것은 절대적으로 필요하지 않습니다 항상 출력 열에 이름을 할당 할 수 있습니다. 사용 사용as절.

에서 임의의 표현식을 사용할 수도 있습니다주문 by열을 포함한 조항 에 나타나지 않습니다.롤 토토출력 목록. 따라서 다음 진술은 유효합니다.

유통 업체에서 이름을 선택하여 코드별로 주문;

이 기능의 한계는입니다.주문 byA의 결과에 적용되는 조항Union, 교차또는제외조항은 출력 열 이름 또는 번호 만 지정할 수 있습니다. 표현.

IF an주문 by표현은 a 출력 열 이름과 입력 열 이름,주문 by의지 출력 열 이름으로 해석하십시오. 이것은 반대입니다 그 선택그룹 by같은 상황. 이 불일치는 호환됩니다 SQL 표준으로.

선택적으로 키워드를 추가 할 수 있습니다ASC(오름차순) 또는desc(내림차순)에서 어떤 식 으로든주문 by절. 지정되지 않은 경우ASC기본적으로 가정됩니다. 또는 a 특정 주문 연산자 이름은에 지정할 수 있습니다.사용절. 주문 연산자 일부 B- 트리보다 덜 또는 더 큰 멤버 여야합니다. 운영자 가족.ASC보통입니다 동등한사용 <desc일반적으로사용. (그러나 a의 창조자 사용자 정의 데이터 유형은 기본 정렬을 정확히 정의 할 수 있습니다. 주문은 다른 사람과 운영자와 일치 할 수 있습니다. 이름.)

if널 마지막지정되어 있습니다 값은 모든 비 널 값 후에 정렬됩니다. 만약에Nulls First지정되어 있고 null 값 정렬 모든 널이 아닌 값 앞에. 둘 다 지정되지 않으면 기본 동작은널 마지막언제ASC지정되거나 묵시적이며Nulls First언제desc지정되어 있습니다 (따라서 기본값은 행동해야합니다 널이 널이 아닌 것보다 크는 것처럼). 언제사용기본 널 순서가 지정되어 있습니다 연산자가 덜 또는 더 큰지에 따라 다릅니다. 연산자.

주문 옵션은 표현에만 적용됩니다. 따르다; 예를 들어주문별 주문, y desc주문별 주문 desc, y desc.

문자-스트링 데이터는 Collation에 따라 정렬됩니다 정렬되는 열에 적용됩니다. 그것은 무시할 수 있습니다 a를 포함하여 필요에 따라Collate절 에서표현, 예를 들어MyColumn의 주문 "en_us". 을 위한 자세한 정보 참조섹션 4.2.10andPostgreSQL : 문서 : 9.2 : 사설 토토 사이트 Support.

Limit

theLimit절은 두 가지로 구성됩니다 독립적 인 하위 조명 :

제한count| 모두시작

count최대 값을 지정합니다 반환 할 행 수, 동안시작행 수를 지정합니다 줄을 반환하기 전에 건너 뜁니다. 둘 다 지정되면시작행이 건너 뜁니다 계산하기 시작count반환 할 행.

count표현 null로 평가하면로 취급됩니다.제한 모두, 즉 제한 없음. 만약에시작null로 평가하면 처리됩니다 동일오프셋 0.

SQL : 2008은 동일하게 달성하기 위해 다른 구문을 도입했습니다 결과, 어느PostgreSQL또한 지원합니다. 그것은:

오프셋시작행 | 줄count] 행 | 줄 전용

이 구문에서 간단한 정수를 제외한 모든 것을 써 상수시작또는count, 당신은 작성해야합니다 주변 괄호. 만약에counta에서 생략 됨fetch절, IT 기본값은 1입니다.Rowand뿐만 아니라첫 번째and다음노이즈 단어는 그렇지 않습니다 이 조항의 효과에 영향을 미칩니다. 에 따르면 표준,오프셋조항이 와야합니다 전fetch둘 다인 경우 절 현재의; 하지만PostgreSQLIS LAXER 및 ORDER를 허용합니다.

사용시Limit, 좋은 생각입니다 사용하려면주문 by조항 결과 행을 고유 순서로 제한합니다. 그렇지 않으면 당신 쿼리 행의 예측할 수없는 하위 집합을 얻을 수 있습니다. 10 번에서 20 줄에서 20 줄을 요구하고 있지만 10 번째 20에서 어떤 주문을 통해? 당신은 무엇을 모릅니다 지정하지 않는 한 주문주문 에 의해.

쿼리 플래너가Limit로 쿼리 계획을 생성 할 때 계정이므로 가능성이 높습니다. 다른 계획 (다른 행 주문을 산출)에 따라 얻습니다 당신이 사용하는 것에Limitand오프셋. 따라서 다른 사용Limit/오프셋쿼리 결과의 다른 서브 세트를 선택할 값일관성이 없을 것입니다 결과예측 가능한 결과 순서를 시행하지 않는 한 와 함께주문 by. 이것은 버그가 아닙니다. 그것 SQL이 그렇지 않다는 사실의 고유 한 결과입니다. 특정 쿼리 결과를 전달할 것을 약속합니다. 주문하지 않는 한 주문주문 by익숙합니다 순서를 제한하십시오.

동일한 반복 실행도 가능Limit쿼리를 다르게 반환합니다 테이블 행의 하위 집합, 그렇지 않은 경우주문 by결정 론적 선택을 시행합니다 서브 세트. 다시, 이것은 버그가 아닙니다. 결과의 결정론은 다음과 같습니다 그러한 경우에 단순히 보장되지 않습니다.

업데이트/공유하다

the업데이트절은 이것을 가지고 있습니다 형태:

업데이트 [oftable_name[, ...]] [nowait]

밀접하게 관련된공유조항은 다음 양식을 가지고 있습니다.

share [oftable_name[, ...]] [nowait]

업데이트행을 유발합니다 에 의해 검색롤 토토진술 업데이트를 위해 잠겨 있습니다. 이것은 그들을 존재하지 못하게합니다 현재까지 다른 트랜잭션에 의해 수정 또는 삭제되었습니다 트랜잭션이 끝납니다. 즉, 시도하는 다른 거래업데이트, 삭제, 또는선택 업데이트64965_65050업데이트, 삭제또는선택 update다른 거래에서 이미 잠겨 있습니다 선택한 행 또는 행,선택하십시오 업데이트다른 거래가 완료되기를 기다릴 것입니다. 그런 다음 업데이트 된 행을 잠그고 반환합니다. 행이 삭제되었습니다). A 내에서반복 가능 읽다또는SERIALIZALE거래, 그러나 잠긴 행에 잠겨 있으면 오류가 발생합니다. 거래가 시작된 이후 변경되었습니다. 더 많은 토론을 위해 보다사설 토토 : 문서 : 9.2 : 동시성 제어.

공유제외하고 비슷하게 동작합니다 각각의 독점적 잠금이 아닌 공유를 얻는다는 검색된 행. 공유 잠금 장치는 다른 트랜잭션을 차단합니다 실행할 수 있는업데이트, 삭제, 또는선택하십시오 업데이트이 행에서는 방해하지 않습니다. 실행할 수 있는공유 선택.

운영이 다른 거래를 기다리는 것을 방지합니다 커밋하려면 사용nowait옵션. 와 함께nowait, 성명서는 an 선택한 행을 잠글 수없는 경우 대기 대신 오류 즉시. 참고nowait적용 로드 레벨 잠금 장치에만-필수행 공유테이블 레벨 잠금은 여전히 일반적인 방법 (참조사설 토토 : 문서 : 9.2 : 동시성 제어). 당신은 할 수 있습니다 사용PostgreSQL : 문서 : 9.2 : 토토 베이withnowait옵션 먼저, 획득 해야하는 경우 대기하지 않고 테이블 레벨 잠금.

특정 테이블이 이름 지어지면업데이트또는for share그 테이블에서 나오는 행은 잠겨 있습니다. 사용 된 다른 테이블 에서롤 토토간단히 읽습니다 평소. 에이업데이트 용또는공유 용테이블 목록이없는 조항이 영향을 미칩니다 진술에 사용 된 모든 테이블. 만약에업데이트또는공유보기 또는 하위 쿼리는보기에 사용되는 모든 테이블에 영향을 미치거나 하위 정체. 하지만,업데이트/공유적용하지 마십시오with기본에서 참조 한 쿼리 질문. 행 잠금이 A 내에서 발생하기를 원한다면with쿼리, 지정업데이트또는공유내에서with쿼리.

다중업데이트공유클로스는 그것이 있다면 클로스를 작성할 수 있습니다 다른 잠금 동작을 지정하는 데 필요합니다 테이블. 동일한 테이블이 언급 된 경우 (또는 암시 적으로 영향을받는 경우) 둘 다업데이트and공유Clauses, 그런 다음로 처리됩니다.업데이트. 마찬가지로 테이블이 있습니다 처리nowait그렇다면 영향을 미치는 조항에 지정됩니다.

업데이트and공유컨텍스트에서 사용할 수 없습니다 반환 된 행은 개인으로 명확하게 식별 할 수 없습니다 테이블 행; 예를 들어와 함께 사용할 수 없습니다 집합.

언제업데이트또는for shareA의 최상위 레벨에 나타납니다롤 토토쿼리, 잠긴 행 쿼리에 의해 반환되는 것과 정확히 일치합니다. 경우 조인 쿼리 중에서 잠긴 행은 결합 행을 반환했습니다. 또한 쿼리를 만족시키는 행 쿼리 스냅 샷 기간 동안 조건이 잠겨 있지만 그들은 이후에 업데이트 된 경우 반환되지 않습니다. 스냅 샷은 더 이상 쿼리 조건을 만족하지 않습니다. aLimit사용됩니다. 잠금은 한 번 중지됩니다 한계를 충족하기 위해 충분한 행이 반환되었습니다 (그러나 참고 그 줄은오프셋의지 잠겨 있습니다). 마찬가지로업데이트또는공유는 커서에 사용됩니다 쿼리, 커서에 의해 실제로 행하는 행만 실제로 가져 오거나 밟았습니다. 잠겨 있습니다.

언제업데이트또는for share서브에 나타납니다.롤 토토, 잠겨있는 행은 반환 된 행입니다 하위 쿼리의 외부 쿼리. 여기에는 줄이 적을 수 있습니다 하위 쿼리 만 검사하는 것보다 그 이후로 제안 할 것입니다 외부 쿼리의 조건은 최적화에 사용될 수 있습니다. 하위 쿼리의 실행. 예를 들어,

선택 *에서 (MyTable From MyTable for Update for Update) ss where col1 = 5;

col1 = 5하위 쿼리.

주의

행을 잠그고 그 내에서 수정하는 것을 피하십시오. 나중에 SavePoint 또는pl/pgsql예외 블록. 에이 후속 롤백으로 인해 자물쇠가 손실됩니다. 예를 들어:

시작;
mytable에서 *를 선택하십시오. 여기서 key = 1 업데이트;
SavePoint S;
mytable set을 업데이트 ... 여기서 key = 1;
s; 롤백

이후롤백, 행 그로 돌아 오기보다는 사실상 잠금 해제됩니다 잠금되었지만 수정되지 않은 사전 사전 포인트 상태. 이 위험은 전류에 잠긴 ​​경우 발생합니다. 트랜잭션이 업데이트 또는 삭제되거나 공유 잠금 장치 인 경우 이 모든 경우에 배타적으로 업그레이드됩니다 이전의 자물쇠 상태가 잊혀졌습니다. 거래가있는 경우 그런 다음 원본 사이의 상태로 롤백했습니다 잠금 명령과 그 이후의 변경, 행은 그럴 것입니다 전혀 잠긴 것처럼 보입니다. 이것은입니다 구현 부족은 a 향후 릴리스PostgreSQL.

주의

a 가능합니다.롤 토토읽기 헌신적인트랜잭션 격리 수준 및 사용주문 by업데이트/공유행을 반환합니다 주문하다. 이건이기 때문입니다.주문 에 의해먼저 적용됩니다. 명령은 결과를 정렬합니다. 그런 다음 하나의 자물쇠를 얻으려고 차단하거나 더 많은 행. 일단롤 토토차단 해제, 주문 중 일부 열 값이 수정되었을 수 있습니다 그 줄은 순서대로 보이지 않는 것처럼 보입니다. 원래 열 값의 관점에서 순서입니다). 이것은를 배치함으로써 필요에 따라 일할 수 있습니다.업데이트/공유a 하위 쿼리, 예를 들어

롤 토토 * from (롤 토토 * from mytable for update) ss order by column1;

이로 인해 모든 행이 잠겨mytable, 반면업데이트최상위에서 잠이 듭니다 실제로 반환 된 행만. 이것은 a를 만들 수 있습니다 특히 성능 차이, 특히주문 byLimit또는 기타 제한. 따라서이 기술은 동시에 만 권장됩니다 주문 열의 업데이트가 예상됩니다 엄격하게 정렬 된 결과가 필요합니다.

at반복 가능한 읽기또는SERIALIZABLE거래 격리 수준 이로 인해 직렬화가 발생합니다 실패 (ASQLSTATEof'40001'), 아니요 이에 따라 순서대로 행을받을 가능성 격리 수준.

테이블명령

명령

테이블이름

완전히 동일합니다

선택 *에서이름

최상위 명령 또는 공간 절약으로 사용할 수 있습니다. 복잡한 쿼리의 일부의 구문 변형.

예제

테이블에 가입하려면영화테이블유통 업체:

F. Title, F.Did, D.Name, F.Date_Prod, F.Kind를 선택하십시오
    유통 업체 D, 필름 f
    여기서 f.did = d.did

       제목 | |     이름 | date_prod |   친절한
------------------+-----+-----------------------------------
 세 번째 사람 | 101 | 영국 사자 | 1949-12-23 | 드라마
 아프리카 여왕 | 101 | 영국 사자 | 1951-08-11 | 로맨틱
 ...

열을 합산하려면Len75446_75489Kind:

Kind의 Total from Films Group의 SOLE SONT, SUM (LEN);

   친절 | 총
----------+-------
 행동 | 07:34
 코미디 | 02:58
 드라마 | 14:28
 뮤지컬 | 06:42
 낭만적 인 | 04:38

열을 합산하려면Len모든 영화의, 결과를 그룹Kind5 시간 미만의 그룹 총액 :

SELECT KIND, SUM (LEN)을 총으로 선택하십시오
    영화에서
    친절하게 그룹
    합 (Len) <interval '5 시간';

   친절 | 총
----------+-------
 코미디 | 02:58
 낭만적 인 | 04:38

다음 두 가지 예는 동일하게 정렬하는 방법입니다. 두 번째 열의 내용에 따른 개별 결과 (이름):

유통 업체에서 이름으로 선택 * 선택;
배급 자 주문 *을 선택하여 2;

 |       이름
-----+-------------------
 109 | 20 세기 폭스
 110 | 바이에른 아틀리에
 101 | 영국 사자
 107 | 콜롬비아
 102 | 장 루크 고다드
 113 | 루소 영화
 104 | MOSFILM
 103 | 최고의
 106 | 도호
 105 | 연합 예술가
 111 | 월트 디즈니
 112 | 워너 브라더스
 108 | 서부 제국

다음 예제는 테이블의 결합을 얻는 방법을 보여줍니다유통 업체배우, 결과를 그 결과로 제한합니다 각 테이블의 문자 w로 시작하십시오. 독특한 행만이 있습니다 원한다, 그래서 핵심 단어allIS 생략.

유통 업체 : 배우 :
 |     이름 ID |     이름
-----+-----------------+------------------
 108 | 서쪽으로 1 | 우디 앨런
 111 | 월트 디즈니 2 | 워렌 비티
 112 | 워너 브라더스 3 | 월터 마타 우
 ... ...

유통 업체를 선택하십시오
    유통 업체로부터
    장소는 'W%'와 같은 이름
노동 조합
actors.name을 선택하십시오
    배우로부터
    여기서 행위자. 이름은 'w%';

      이름
---------------
 월트 디즈니
 월터 마타 우
 워너 브라더스
 워렌 비티
 서부 제국
 우디 앨런

이 예제는에서 함수를 사용하는 방법을 보여줍니다.From열이 있거나없는 조항 정의 목록 :

함수 분배기 생성 (int) 배급 자 세트를 $$로 반환합니다
    배급 자에서 *를 선택하십시오.
$$ 언어 SQL;

배급 자에서 *를 선택하십시오 (111);
 |    이름
-----+----------
 111 | 월트 디즈니

function distributors_2 (int) 작성 레코드를 $$로 반환합니다
    배급 자에서 *를 선택하십시오.
$$ 언어 SQL;

배급소에서 *를 선택하십시오 _2 (111) AS (f1 int, f2 text);
 F1 |     F2
-----+----------
 111 | 월트 디즈니

이 예제는 간단한 사용 방법을 보여줍니다with절 :

t as (
    generate_series (1, 3)에서 random ()를 x로 선택하십시오.
  ))
*에서 *를 선택하십시오
모두
*에서 *를 선택하십시오

         엑스          
-------------------
  0.534150459803641
  0.520092216785997
 0.0735620250925422
  0.534150459803641
  0.520092216785997
 0.0735620250925422

with쿼리 한 번만 평가하여 두 세트의 세트를 얻었습니다. 랜덤 값.

이 예제재귀to 직원 Mary의 모든 부하 직원 (직접 또는 간접)을 찾으십시오. 그리고 그들의 간접 수준, 직접 부하 직원 :

재귀 적 Employee_recursive (거리, Employee_name, manager_name) AS (
    1, Employee_name, manager_name을 선택하십시오
    직원으로부터
    여기서 manager_name = 'Mary'
  모두
    er.distance + 1, e.employee_name, e.manager_name을 선택하십시오
    Employee_Recursive er, Employee e
    er.employee_name = e.manager_name
  ))
Employee_Recursive의 Employee_name을 선택하십시오.

일반적인 형태의 재귀 쿼리 : 초기 조건, 그 뒤에Union쿼리의 재귀 부분에 의해. 재귀가 있는지 확인하십시오 쿼리의 일부는 결국 튜플을 반환하지 않습니다. 쿼리는 무기한으로 반복됩니다. (보다섹션 7.8더 많은 예를 보려면)

호환성

물론롤 토토성명서입니다 SQL 표준과 호환됩니다. 그러나 약간의 확장이 있습니다 그리고 일부 누락 된 기능.

생략From클로즈

postgresql하나를 허용합니다 생략From절. 그것은 있습니다 간단한 결과를 계산하기 위해 간단한 사용 표현 :

롤 토토 2+2;

 ?열?
---------
        4

다른SQL데이터베이스 더미 한 열 테이블을 소개하는 것 외에는이를 수행 할 수 없습니다. 무엇을 해야하는지롤 토토.

From절은 그렇지 않습니다 지정된 쿼리는 데이터베이스 테이블을 참조 할 수 없습니다. 을 위한 예를 들어 다음 쿼리는 유효하지 않습니다.

유통 업체를 선택하십시오.* 유통 업체 .name = '서쪽으로';

postgresql사전 릴리스 8.1 에서이 양식의 쿼리를 수락하고 암시 적 추가 쿼리 입력From조항 각 테이블은 쿼리에서 참조했습니다. 이것은 더 이상 아닙니다 허용된.

생략as키워드

SQL 표준에서 선택적인 키워드as출력 열 이름 전에 생략 할 수 있습니다 새 열 이름이 유효한 열 이름 일 때마다 (즉, 예약 된 키워드와 동일하지 않음).PostgreSQL약간 더 제한적입니다 :as새 열 이름이라면 필요합니다 예약 여부에 관계없이 모든 키워드와 일치합니다. 추천 연습은 사용하는 것입니다as또는 이중 쿼트 가능한 충돌을 방지하기 위해 출력 열 이름 향후 키워드 추가.

inFrom항목, 표준 그리고PostgreSQL허용as그 별명 전에 생략됩니다 예약되지 않은 키워드입니다. 그러나 이것은 출력에 비현실적입니다 구문의 모호성으로 인해 열 이름.

전용및 상속

SQL 표준에는 테이블 이름 주변의 괄호가 필요합니다 쓸 때전용, 예를 들어선택 *에서만 (tab1) 만 (tab2) 어디 .... PostgreSQL이 괄호를 선택 사항으로 간주합니다.

PostgreSQL허용 a 후행*명시 적으로 작성됩니다 비 지정전용동작 자식 테이블 포함. 표준은 이것을 허용하지 않습니다.

(이 점은 지원하는 모든 SQL 명령에 동일하게 적용됩니다 그만큼전용옵션.)

네임 스페이스 사용 가능그룹 by주문 by

SQL-92 표준에서 AN주문 by조항은 출력 열 이름 또는 숫자 만 사용할 수 있지만 A그룹 by절은 만 사용할 수 있습니다 입력 열 이름을 기반으로 한 표현식.PostgreSQL이 조항을 각각 확장합니다 다른 선택도 허용하기 위해 (그러나 표준을 사용합니다. 모호성이있는 경우 해석).PostgreSQL또한 두 절 모두를 허용합니다 임의 표현식을 지정하십시오. 이름에 표시되는 이름이 나타납니다 표현식은 항상 입력 열 이름으로 간주됩니다. 출력 열 이름.

SQL : 1999 및 나중에는 약간 다른 정의를 사용합니다 SQL-92와 완전히 호환되는 것은 아닙니다. 대부분의 경우 하지만,PostgreSQL의지 해석주문 by또는그룹 bySQL과 같은 방식과 같은 표현 : 1999 하다.

기능적 종속성

PostgreSQL인식 기능적 의존성 (열을 생략 허용그룹 by) 테이블의 기본 일 때만 키가에 포함되어 있습니다.그룹 by목록. SQL 표준은 추가 조건을 지정합니다 인정.

조항 제한

SQL 표준은 창에 대한 추가 옵션을 제공합니다frame_clause. PostgreSQL현재 만 지원합니다 위에 나열된 옵션.

Limit오프셋

클로즈Limitand오프셋arePostgreSQL-특이 적 구문, 또한MySQL. SQL : 2008 표준 조항을 소개했습니다오프셋 ... 페치 첫 번째 | 다음 ...표시된 것과 동일한 기능의 경우 위의제한 절. 이 구문은에 의해서도 사용됩니다.IBM DB2. (응용 프로그램Oracle자주 사용하십시오 자동 생성 된 해결 방법Rownum열이 없습니다 Postgresql,이 조항의 효과를 구현하려면.)

업데이트andfor share

비록업데이트에 나타납니다 SQL 표준, 표준은 옵션으로 만 허용합니다.커서 선언. PostgreSQL롤 토토쿼리뿐만 아니라 서브롤 토토s이지만 이것은 확장입니다. 그만큼for share변형 및nowait옵션은 표시되지 않습니다 기준.

데이터 수정 문의with

PostgreSQL허용삽입, 업데이트삭제to 로 사용with쿼리. 이것은 아닙니다 SQL 표준에서 발견되었습니다.

비표준 조항

조항별개의그렇지 않습니다 SQL 표준에 정의 됨