PostgreSQL데이터 토토 꽁 머니은 기본 토토 꽁 머니, 컨테이너 토토 꽁 머니, 도메인 및 의사 토토 꽁 머니으로 나눌 수 있습니다.
기본 토토 꽁 머니은와 같은 것입니다.Integer
, 그것은 아래에서 구현됩니다SQL언어 (일반적으로 C와 같은 저수준 언어). 일반적으로 추상 데이터 토토 꽁 머니으로 자주 알려진 것에 해당합니다.postgresql사용자가 제공 한 함수를 통해서만 해당 토토 꽁 머니에서만 작동 할 수 있으며 사용자가 설명하는 정도까지 그러한 토토 꽁 머니의 동작 만 이해합니다. 내장 된 기본 토토 꽁 머니은에 설명되어 있습니다.8 장.
열거 된 (ENUM) 토토 꽁 머니은 기본 토토 꽁 머니의 하위 범주로 간주 될 수 있습니다. 주요 차이점은 Just를 사용하여 만들 수 있다는 것입니다.SQL저수준 프로그래밍없이 명령. 참조섹션 8.7자세한 내용은
PostgreSQL세 종류의“컨테이너”토토 꽁 머니은 다른 토토 꽁 머니의 여러 값을 포함하는 토토 꽁 머니입니다. 이들은 배열, 복합재 및 범위입니다.
배열은 모두 같은 토토 꽁 머니의 여러 값을 보유 할 수 있습니다. 배열 토토 꽁 머니은 각 기본 토토 꽁 머니, 복합 토토 꽁 머니, 범위 토토 꽁 머니 및 도메인 토토 꽁 머니에 대해 자동으로 작성됩니다. 그러나 배열 배열은 없습니다. 토토 꽁 머니 시스템에 관한 한 다차원 배열은 1 차원 배열과 동일합니다. 참조PostgreSQL : 문서 : 17 : 8.15. 토토 꽁 머니자세한 내용은
사용자가 테이블을 만들 때마다 복합 토토 꽁 머니 또는 행 토토 꽁 머니이 생성됩니다. 또한 사용하는 것도 가능합니다PostgreSQL :a를 정의하려면“독립형”관련 테이블이없는 복합 토토 꽁 머니. 복합 토토 꽁 머니은 단순히 필드 이름이 관련된 토토 꽁 머니 목록입니다. 복합 토토 꽁 머니의 값은 필드 값의 행 또는 레코드입니다. 참조PostgreSQL : 문서 : 17 : 8.16. 스포츠 토토 결과 유형자세한 내용은
범위 토토 꽁 머니은 동일한 토토 꽁 머니의 두 값을 보유 할 수 있습니다. 몇 가지 내장 토토 꽁 머니이 존재하지만 범위 토토 꽁 머니은 사용자가 만듭니다. 참조PostgreSQL : 문서 : 17 : 8.17. 롤 토토 유형자세한 내용은
도메인은 특정 기본 토토 꽁 머니을 기반으로하며 많은 목적으로 기본 토토 꽁 머니과 상호 교환 할 수 있습니다. 그러나 도메인은 유효한 값을 기본 토토 꽁 머니이 허용하는 것의 하위 집합으로 제한하는 제약 조건을 가질 수 있습니다. 도메인은를 사용하여 생성됩니다.SQL명령도메인 생성. 참조PostgreSQL : 문서 : 17 : 8.18. 도메인 젠 토토자세한 내용은
몇 가지가 있습니다“Pseudo-types”특별한 목적. 의사 유형은 컨테이너 유형의 테이블 또는 구성 요소의 열로 나타날 수 없지만 인수 및 결과 유형을 선언하는 데 사용될 수 있습니다. 이것은 유형 시스템 내에서 특수 클래스의 기능을 식별하는 메커니즘을 제공합니다.표 8.27기존 의사 토토 꽁 머니을 나열합니다.
특별한 관심의 일부 의사 토토 꽁 머니은입니다.다형성 토토 꽁 머니, 선언하는 데 사용되는다형성 기능. 이 강력한 기능을 사용하면 단일 기능 정의가 다양한 데이터 유형에서 작동 할 수 있으며 특정 데이터 유형은 특정 호출에서 실제로 전달 된 데이터 유형에 의해 결정됩니다. 다형성 토토 꽁 머니은에 표시됩니다.표 36.1. 그들의 사용의 일부 예는에 나타납니다.섹션 36.5.11.
표 36.1. 다형성 토토 꽁 머니
이름 | 가족 | 설명 |
---|---|---|
Anylement |
단순 | 함수가 데이터 토토 꽁 머니을 수락 함을 나타냅니다 |
AnyArray |
단순 | 함수가 배열 데이터 토토 꽁 머니을 수락 함을 나타냅니다 |
AnynonArray |
단순 | 함수가 비 어울리 데이터 토토 꽁 머니을 수락 함을 나타냅니다 |
AnyEnum |
단순 | 함수가 열거 데이터 토토 꽁 머니을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 17 : 8.7. 열거 된 스포츠 토토 베트맨) |
AnyRange |
단순 | 함수가 모든 범위 데이터 토토 꽁 머니을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 17 : 8.17. 롤 토토 유형) |
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
및 기본 요소 일치 매개 변수 선언Anylement
및AnyArray
.
따라서, 다형성 토토 꽁 머니으로 둘 이상의 인수 위치가 선언되면, 순 효과는 실제 인수 유형의 특정 조합 만 허용된다는 것입니다. 예를 들어,로 선언 된 함수Equal (Anylement, Anylement)
동일한 데이터 유형 인 한 두 개의 입력 값을 취합니다.
함수의 반환 값이 다형성 토토 꽁 머니으로 선언되면 다형성 인 인수 위치가 하나 이상 있어야하며 다형성 인수에 제공되는 실제 데이터 유형이 해당 호출의 실제 결과 유형을 결정해야합니다. 예를 들어, 배열 위트 스크립팅 메커니즘이 아직 없으면 첨자를 |첨자 (AnyArray, Integer)를 반환합니다
. 이 선언은 실제 첫 번째 인수가 배열 토토 꽁 머니으로 제한되며, 파서는 실제 첫 번째 인수 토토 꽁 머니에서 올바른 결과 토토 꽁 머니을 유추 할 수 있습니다. 또 다른 예는로 선언 된 함수입니다.f (Anyarray) 반환
열거 토토 꽁 머니의 배열 만 허용합니다.
대부분의 경우, 파서는 같은 패밀리에서 다른 다형성 토토 꽁 머니 인 인수의 다형성 결과 유형에 대한 실제 데이터 유형을 유추 할 수 있습니다. 예를 들어AnyArray
에서 추론 할 수 있습니다Anylement
또는 그 반대도 마찬가지입니다. 예외적으로 유형의 다형성 결과AnyRange
토토 꽁 머니의 인수가 필요합니다AnyRange
; 에서 추론 할 수 없습니다AnyArray
또는Anylement
인수. 동일한 하위 유형의 여러 범위 유형이있을 수 있기 때문입니다.
참고AnynonArray
andAnyEnum
별도의 토토 꽁 머니 변수를 나타내지 마십시오. 그들은와 같은 토토 꽁 머니입니다.Anylement
, 추가적인 제약 조건. 예를 들어 함수를 선언F (Anylement, Anyenum)
|F (Anyenum, Anyenum)
: 실제 인수는 모두 동일한 열거 형이어야합니다.
용“common”다형성 토토 꽁 머니의 가족, 매칭 및 공제 규칙은와 거의 동일하게 작동합니다.“단순”가족, 한 가지 주요 차이점 : 실제 유형의 인수 유형은 단일 공통 유형으로 암시 적으로 캐스트 될 수있는 한 동일 할 필요는 없습니다. 공통 유형은와 같은 규칙에 따라 선택됩니다.Union
및 관련 구성 (참조사설 토토 PostgreSQL : 문서 : 17 : 10.5. 연합, 사례 및 관련 구성). 공통 토토 꽁 머니의 선택은 실제 토토 꽁 머니의를 고려합니다.AnyCompatible
andanycompatiblenonArray
입력, 배열 요소 토토 꽁 머니anycompatiblearray
입력,의 범위 하위 토토 꽁 머니anycompatiblerange
입력 및 멀티 랜지 하위 토토 꽁 머니의anycompatiblemultirange
입력. 만약에anycompatiblenonArray
존재한다면 공통 토토 꽁 머니은 비 어울리 토토 꽁 머니이어야합니다. 공통 토토 꽁 머니이 식별되면 인수AnyCompatible
andanycompatiblenonArray
위치는 자동으로 해당 토토 꽁 머니으로 캐스팅되며 인수는anycompatiblearray
위치는 해당 토토 꽁 머니의 배열 토토 꽁 머니에 자동으로 캐스팅됩니다.
하위 토토 꽁 머니 만 알고있는 범위 토토 꽁 머니을 선택할 방법이 없기 때문에anycompatiblerange
및/또는anycompatiblemultirange
해당 유형으로 선언 된 모든 인수는 동일한 실제 범위 및/또는 멀티 랜지 유형을 가지며 해당 유형의 하위 유형은 선택한 공통 유형과 일치하므로 범위 값의 캐스팅이 필요하지 않도록 요구합니다. 와 마찬가지로AnyRange
andAnymultirange
, 사용anycompatiblerange
및Anymultirange
함수 결과 토토 꽁 머니으로서가 필요합니다.anycompatiblerange
또는anycompatiblemultirange
인수.
없음anycompatibleenum
타입. 이러한 유형은 일반적으로 열거 유형에 암시 적 캐스트가 없기 때문에 그다지 유용하지 않을 것입니다. 즉, 비열한 열거적인 입력에 대한 공통 유형을 해결할 방법이 없음을 의미합니다..
the“단순”and“common”다형성 패밀리는 두 개의 독립적 인 토토 꽁 머니 변수 세트를 나타냅니다. 예를 들어 고려
함수 생성 myfunc (aylement, by element, c anycompatible, d anycompatible) 반환 할 수있는 반품 ...
이 함수의 실제 호출에서 처음 두 입력은 정확히 같은 토토 꽁 머니을 가져야합니다. 마지막 두 입력은 공통 토토 꽁 머니으로 홍보 할 수 있어야하지만이 토토 꽁 머니은 처음 두 입력의 토토 꽁 머니과 관련이 없습니다. 결과에는 마지막 두 입력의 공통 토토 꽁 머니이 있습니다.
변수 함수 (하나는 변수 수의 인수를 취하는 것과 같이섹션 36.5.6)는 다형성이 될 수 있습니다 : 이것은 마지막 매개 변수를로 선언하여 달성됩니다.variadic
AnyArray
또는variadic
anycompatiblearray
. 실제 결과 유형을 일치시키고 결정하기 위해, 그러한 함수는 적절한 숫자를 작성한 것과 동일하게 동작합니다AnynonArray
또는anycompatiblenonArray
매개 변수.
31218_31444이 양식문서 문제를보고하려면