36.2. 그만큼postgresql타입 시스템#

PostgreSQL데이터 토토 베이은 기본 토토 베이, 컨테이너 토토 베이, 도메인 및 의사 토토 베이으로 나눌 수 있습니다.

36.2.1. 기본 토토 베이#

기본 토토 베이은와 같은 것입니다.Integer, |SQL언어 (일반적으로 C와 같은 저수준 언어). 일반적으로 추상 데이터 토토 베이으로 자주 알려진 것에 해당합니다.PostgreSQL사용자가 제공 한 함수를 통해서만 해당 토토 베이에서만 작동 할 수 있으며 사용자가 설명하는 정도까지 그러한 토토 베이의 동작 만 이해합니다. 내장 된 기본 토토 베이은에 설명되어 있습니다.8 장.

열거 된 (ENUM) 토토 베이은 기본 토토 베이의 하위 범주로 간주 될 수 있습니다. 주요 차이점은 Just를 사용하여 만들 수 있다는 것입니다.SQL저수준 프로그래밍없이 명령. 참조섹션 8.7자세한 내용은

36.2.2. 컨테이너 토토 베이#

PostgreSQL세 종류의컨테이너토토 베이은 다른 토토 베이의 여러 값을 포함하는 토토 베이입니다. 이들은 배열, 복합재 및 범위입니다.

배열은 모두 같은 토토 베이의 여러 값을 보유 할 수 있습니다. 배열 토토 베이은 각 기본 토토 베이, 복합 토토 베이, 범위 토토 베이 및 도메인 토토 베이에 대해 자동으로 작성됩니다. 그러나 배열 배열은 없습니다. 토토 베이 시스템에 관한 한 다차원 배열은 1 차원 배열과 동일합니다. 참조PostgreSQL : 문서 : 17 : 8.15. 윈 토토자세한 내용은

사용자가 테이블을 만들 때마다 복합 토토 베이 또는 행 토토 베이이 생성됩니다. 또한 사용하는 것도 가능합니다토토 베이 만들기a독립형관련 테이블이없는 복합 토토 베이. 복합 토토 베이은 단순히 필드 이름이 관련된 토토 베이 목록입니다. 복합 토토 베이의 값은 필드 값의 행 또는 레코드입니다. 참조PostgreSQL : 문서 : 17 : 8.16. 스포츠 토토 사이트 유형자세한 내용은

범위 토토 베이은 동일한 토토 베이의 두 값을 보유 할 수 있습니다. 몇 가지 내장 토토 베이이 존재하지만 범위 토토 베이은 사용자가 만듭니다. 참조PostgreSQL : 문서 : 17 : 8.17. 토토 결과 유형자세한 내용은

36.2.3. 도메인#

도메인은 특정 기본 토토 베이을 기반으로하며 많은 목적으로 기본 토토 베이과 상호 교환 할 수 있습니다. 그러나 도메인은 유효한 값을 기본 토토 베이이 허용하는 것의 하위 집합으로 제한하는 제약 조건을 가질 수 있습니다. 도메인은를 사용하여 생성됩니다.SQL명령도메인 생성. 참조PostgreSQL : 문서 : 17 : 8.18. 도메인 토토 사이트자세한 내용은

36.2.4. 의사 토토 베이#

몇 가지가 있습니다Pseudo-types특별한 목적. 의사 유형은 컨테이너 유형의 테이블 또는 구성 요소의 열로 나타날 수 없지만 인수 및 결과 유형을 선언하는 데 사용될 수 있습니다. 이것은 유형 시스템 내에서 특수 클래스의 기능을 식별하는 메커니즘을 제공합니다.표 8.27기존 의사 토토 베이을 나열합니다.

36.2.5. 다형성 토토 베이#

특별한 관심의 일부 의사 토토 베이은다형성 토토 베이, 선언하는 데 사용되는다형성 기능. 이 강력한 기능을 사용하면 단일 기능 정의가 여러 다른 데이터 유형에서 작동 할 수 있으며 특정 데이터 유형은 특정 호출에서 실제로 전달 된 데이터 유형에 의해 결정됩니다. 다형성 토토 베이은에 표시됩니다.표 36.1. 그들의 사용의 일부 예는에 나타납니다.섹션 36.5.11.

표 36.1. 다형성 토토 베이

이름 가족 설명
Anylement 단순 함수가 데이터 토토 베이을 수락 함을 나타냅니다
AnyArray 단순 함수가 배열 데이터 토토 베이을 허용한다는 것을 나타냅니다.
AnynonArray 단순 함수가 비 어울리 데이터 토토 베이을 수락 함을 나타냅니다
AnyEnum 단순 함수가 열거 데이터 토토 베이을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 17 : 8.7. 열거 된 토토 사이트)
AnyRange 단순 함수가 모든 범위 데이터 토토 베이을 수락 함을 나타냅니다 (참조PostgreSQL :)
Anymultirange 단순 함수가 멀티 랜지 데이터 토토 베이을 허용한다는 것을 나타냅니다 (참조PostgreSQL : 문서 : 17 : 8.17. 토토 결과 유형)
AnyCompatible common 함수는 공통 데이터 토토 베이에 대한 여러 인수를 자동으로 프로모션하여 데이터 토토 베이을 수락 함을 나타냅니다.
anycompatiblearray common 함수는 공통 데이터 토토 베이에 대한 여러 인수를 자동으로 프로모션하여 배열 데이터 토토 베이을 수락 함을 나타냅니다.
anycompatiblenonArray common 함수는 공통 데이터 토토 베이으로 여러 인수를 자동으로 프로모션하여 비 어울리 데이터 토토 베이을 수락 함을 나타냅니다.
anycompatiblerange common 함수는 공통 데이터 토토 베이으로 여러 인수를 자동으로 프로모션하여 범위 데이터 토토 베이을 수락 함을 나타냅니다.
anycompatiblemultirange common 함수는 공통 데이터 토토 베이으로 여러 인수를 자동으로 프로모션하여 멀티 랜지 데이터 토토 베이을 수락 함을 나타냅니다.

다형성 인수와 결과는 서로 연결되어 있으며 다형성 기능을 호출하는 쿼리가 구문 분석 될 때 특정 데이터 유형으로 해결됩니다. 둘 이상의 다형성 인수가 있으면 입력 값의 실제 데이터 유형이 아래에 설명 된대로 일치해야합니다. 함수의 결과 유형이 다형성이거나 다형성 토토 베이의 출력 매개 변수가있는 경우, 해당 결과의 유형은 다음과 같은 다형성 입력의 실제 유형에서 추론됩니다..

단순다형성 토토 베이의 가족, 일치 및 공제 규칙은 다음과 같이 작동합니다.

각 위치 (인수 또는 반환 값)로 선언 된Anylement특정 실제 데이터 토토 베이을 가질 수 있지만 특정 호출에서는 모두이어야합니다.동일실제 토토 베이. 각 위치는로 선언되었습니다.AnyArray배열 데이터 유형을 가질 수 있지만 마찬가지로 모두 동일한 유형이어야합니다. 그리고 마찬가지로, 직책은로 선언되었습니다.AnyRange모두 동일한 범위 유형이어야합니다. 마찬가지로Anymultirange.

또한, 선언 된 위치가 있다면AnyArray그리고 다른 사람들은 선언Anylement,의 실제 배열 토토 베이AnyArray위치는 요소가 동일한 유형 인 배열이어야합니다.Anylement위치.AnynonArray|Anylement, 그러나 실제 토토 베이이 배열 토토 베이이되어서는 안된다는 추가 제약 조건을 추가합니다.AnyEnum|Anylement, 그러나 실제 토토 베이이 열거 된 토토 베이이어야한다는 추가 제약 조건을 추가합니다.

마찬가지로, 선언 된 위치가있는 경우AnyRange그리고 다른 사람들이 선언Anylement또는AnyArray,의 실제 범위 토토 베이AnyRange위치는 하위 유형이 동일한 유형 인 범위 여야합니다.Anylement위치 및 요소 유형과 동일AnyArray위치. 선언 된 직책이있는 경우Anymultirange, 실제 멀티 랜지 토토 베이은 선언 된 매개 변수 일치 범위를 포함해야합니다AnyRange및 기본 요소 일치 매개 변수 선언AnylementandAnyArray.

따라서, 다형성 토토 베이으로 둘 이상의 인수 위치가 선언되면, 순 효과는 실제 인수 유형의 특정 조합 만 허용된다는 것입니다. 예를 들어,로 선언 된 함수Equal (Anylement, Anylement)동일한 데이터 유형 인 한 두 개의 입력 값을 취합니다.

함수의 반환 값이 다형성 토토 베이으로 선언되면 다형성 인 인수 위치가 하나 이상 있어야하며 다형성 인수에 제공되는 실제 데이터 유형이 해당 호출의 실제 결과 유형을 결정해야합니다. 예를 들어, 배열 위트 스크립팅 메커니즘이 아직 없으면 첨자를 |첨자 (AnyArray, Integer)를 반환합니다. 이 선언은 실제 첫 번째 인수가 배열 토토 베이으로 제한되며, 파서는 실제 첫 번째 인수 토토 베이에서 올바른 결과 토토 베이을 유추 할 수 있습니다. 또 다른 예는로 선언 된 함수입니다.f (Anyarray) 반환열거 토토 베이의 배열 만 허용합니다.

대부분의 경우, 파서는 동일한 패밀리에서 다형성 토토 베이의 인수에서 다형성 결과 유형에 대한 실제 데이터 유형을 유추 할 수 있습니다. 예를 들어AnyArray에서 추론 할 수 있습니다Anylement또는 그 반대도 마찬가지입니다. 예외적으로 유형의 다형성 결과AnyRange토토 베이의 인수가 필요합니다AnyRange; 에서 추론 할 수 없습니다AnyArray또는Anylement인수. 동일한 하위 유형의 여러 범위 유형이있을 수 있기 때문입니다.

참고AnynonArrayandAnyEnum별도의 토토 베이 변수를 나타내지 마십시오. 그들은와 같은 토토 베이입니다.Anylement, 추가적인 제약 조건. 예를 들어 함수를 선언f (Anylement, Anyenum)|F (Anyenum, Anyenum): 실제 인수는 모두 동일한 열거 형이어야합니다.

common다형성 토토 베이의 가족, 일치 및 공제 규칙은와 거의 동일하게 작동합니다.단순가족, 한 가지 주요 차이점이있는 가족 : 실제 유형의 인수 유형은 단일 공통 유형으로 암시 적으로 캐스팅 될 수있는 한 동일 할 필요는 없습니다. 공통 유형은와 같은 규칙에 따라 선택됩니다.Union및 관련 구성 (참조젠 토토 PostgreSQL : 문서 : 17 : 10.5. 연합, 사례 및 관련 구성). 공통 토토 베이의 선택은 실제 토토 베이의를 고려합니다.AnycompatibleanycompatiblenonArray입력, 배열 요소 토토 베이anycompatiblearray입력,의 범위 하위 토토 베이anycompatiblerange입력 및 멀티 랜지 하위 토토 베이의anycompatiblemultirange입력. 만약에anycompatiblenonArray존재하면 공통 토토 베이은 비 어울리 토토 베이이어야합니다. 공통 토토 베이이 식별되면 인수AnycompatibleanycompatiblenonArray위치는 자동으로 해당 토토 베이으로 캐스팅되며 인수는anycompatiblearray위치는 해당 토토 베이의 배열 토토 베이에 자동으로 캐스팅됩니다.

하위 토토 베이 만 알고있는 범위 토토 베이을 선택할 방법이 없기 때문에anycompatiblerange및/또는anycompatiblemultirange해당 유형으로 선언 된 모든 인수는 동일한 실제 범위 및/또는 멀티 랜지 유형을 가지며 해당 유형의 하위 유형은 선택한 공통 유형과 일치하므로 범위 값의 캐스팅이 필요하지 않도록합니다. 와 마찬가지로AnyRangeandAnymultirange, 사용anycompatiblerangeandAnymultirange함수 결과 토토 베이으로서가 있어야합니다.anycompatiblerange또는anycompatiblemultirange인수.

없음anycompatibleenum타입. 이러한 유형은 일반적으로 열거 유형에 암시 적 캐스트가 없기 때문에 그다지 유용하지 않을 것입니다. 즉, 비열한 열거적인 입력에 대한 공통 유형을 해결할 방법이 없음을 의미합니다..

the단순andcommon다형성 패밀리는 두 개의 독립적 인 토토 베이 변수 세트를 나타냅니다. 예를 들어 고려

함수 생성 myfunc (aylement, bylement,
                       c anycompatible, d anycompatible)
반환 할 수있는 반품 ...

이 함수의 실제 호출에서 처음 두 입력은 정확히 같은 토토 베이을 가져야합니다. 마지막 두 입력은 공통 토토 베이으로 홍보 할 수 있어야하지만이 토토 베이은 처음 두 입력의 토토 베이과 관련이 없습니다. 결과에는 마지막 두 입력의 공통 토토 베이이 있습니다.

변수 함수 (하나는 변수 수의 인수를 취하는 것과 같이섹션 36.5.6)는 다형성이 될 수 있습니다 : 이것은 마지막 매개 변수를로 선언함으로써 달성됩니다.variadic AnyArray또는variadic anycompatiblearray. 실제 결과 유형을 일치시키고 결정하기 위해, 그러한 함수는 적절한 숫자를 작성한 것과 동일하게 동작합니다AnynonArray또는anycompatiblenonArray매개 변수.

수정 제출

문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면