PostgreSQL데이터 토토 꽁 머니은 기본 토토 꽁 머니, 컨테이너 토토 꽁 머니, 도메인 및 의사 토토 꽁 머니으로 나눌 수 있습니다.
기본 토토 꽁 머니은와 같은 것입니다.정수
, 그것은 아래에서 구현됩니다SQL언어 (일반적으로 C와 같은 저수준 언어). 일반적으로 추상 데이터 토토 꽁 머니으로 자주 알려진 것에 해당합니다.PostgreSQL사용자가 제공 한 함수를 통해서만 해당 토토 꽁 머니에서만 작동 할 수 있으며 사용자가 설명하는 정도까지 그러한 토토 꽁 머니의 동작 만 이해합니다. 내장 된 기본 토토 꽁 머니은에 설명되어 있습니다.8 장.
열거 된 (ENUM) 토토 꽁 머니은 기본 토토 꽁 머니의 하위 범주로 간주 될 수 있습니다. 주요 차이점은 Just를 사용하여 만들 수 있다는 것입니다.SQL저수준 프로그래밍없이 명령. 참조섹션 8.7자세한 내용은
PostgreSQL세 종류의“컨테이너”토토 꽁 머니은 다른 토토 꽁 머니의 여러 값을 포함하는 토토 꽁 머니입니다. 이들은 배열, 복합재 및 범위입니다.
배열은 모두 같은 토토 꽁 머니의 여러 값을 보유 할 수 있습니다. 배열 토토 꽁 머니은 각 기본 토토 꽁 머니, 복합 토토 꽁 머니, 범위 토토 꽁 머니 및 도메인 토토 꽁 머니에 대해 자동으로 작성됩니다. 그러나 배열 배열은 없습니다. 토토 꽁 머니 시스템에 관한 한 다차원 배열은 1 차원 배열과 동일합니다. 참조PostgreSQL : 문서 : 16 : 8.15. 토토 결과자세한 내용은
사용자가 테이블을 만들 때마다 복합 토토 꽁 머니 또는 행 토토 꽁 머니이 생성됩니다. 또한 사용하는 것도 가능합니다토토 꽁 머니 만들기a“독립형”관련 테이블이없는 복합 토토 꽁 머니. 복합 토토 꽁 머니은 단순히 필드 이름이 관련된 토토 꽁 머니 목록입니다. 복합 토토 꽁 머니의 값은 필드 값의 행 또는 레코드입니다. 참조PostgreSQL : 문서 : 16 : 8.16. 토토 핫 유형자세한 내용은
범위 토토 꽁 머니은 동일한 토토 꽁 머니의 두 값을 보유 할 수 있습니다. 몇 가지 내장 토토 꽁 머니이 존재하지만 범위 토토 꽁 머니은 사용자가 만듭니다. 참조PostgreSQL : 문서 : 16 : 8.17. 스포츠 토토 유형자세한 내용은
도메인은 특정 기본 토토 꽁 머니을 기반으로하며 많은 목적으로 기본 토토 꽁 머니과 상호 교환 할 수 있습니다. 그러나 도메인은 유효한 값을 기본 토토 꽁 머니이 허용하는 것의 하위 집합으로 제한하는 제약 조건을 가질 수 있습니다. 도메인은를 사용하여 생성됩니다.SQL명령도메인 만들기. 참조PostgreSQL : 문서 : 16 : 8.18. 도메인 와이즈 토토자세한 내용은
몇 가지가 있습니다“Pseudo-types”특별한 목적. 의사 유형은 컨테이너 유형의 테이블 또는 구성 요소의 열로 나타날 수 없지만 인수 및 결과 유형을 선언하는 데 사용될 수 있습니다. 이것은 유형 시스템 내에서 특수 클래스의 기능을 식별하는 메커니즘을 제공합니다.표 8.27기존 의사 토토 꽁 머니을 나열합니다.
특별한 관심의 일부 의사 토토 꽁 머니은다형성 토토 꽁 머니, 선언하는 데 사용되는다형성 기능. 이 강력한 기능을 사용하면 단일 기능 정의가 여러 다른 데이터 유형에서 작동 할 수 있으며 특정 데이터 유형은 특정 호출에서 실제로 전달 된 데이터 유형에 의해 결정됩니다. 다형성 토토 꽁 머니은에 표시됩니다.표 38.1. 그들의 사용의 일부 예는에 나타납니다.섹션 38.5.11.
표 38.1. 다형성 토토 꽁 머니
이름 | 가족 | 설명 |
---|---|---|
Anylement |
단순 | 함수가 데이터 토토 꽁 머니을 수락 함을 나타냅니다 |
AnyArray |
단순 | 함수가 배열 데이터 토토 꽁 머니을 허용한다는 것을 나타냅니다. |
AnynonArray |
단순 | 함수가 비 어울리 데이터 토토 꽁 머니을 수락 함을 나타냅니다 |
AnyEnum |
단순 | 함수가 열거 데이터 토토 꽁 머니을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 16 : 8.7. 열거 된 와이즈 토토) |
AnyRange |
단순 | 함수가 모든 범위 데이터 토토 꽁 머니을 수락 함을 나타냅니다 (참조PostgreSQL : 문서 : 16 : 8.17. 스포츠 토토 유형) |
Anymultirange |
단순 | 함수가 멀티 랜지 데이터 토토 꽁 머니을 허용한다는 것을 나타냅니다 (참조PostgreSQL : 문서 : 16 : 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
andAnyArray
.
따라서, 다형성 토토 꽁 머니으로 둘 이상의 인수 위치가 선언되면, 순 효과는 실제 인수 유형의 특정 조합 만 허용된다는 것입니다. 예를 들어,로 선언 된 함수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 : 문서 : 16 : 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) 반환 할 수있는 반품 ...
이 함수의 실제 호출에서 처음 두 입력은 정확히 같은 토토 꽁 머니을 가져야합니다. 마지막 두 입력은 공통 토토 꽁 머니으로 홍보 할 수 있어야하지만이 토토 꽁 머니은 처음 두 입력의 토토 꽁 머니과 관련이 없습니다. 결과에는 마지막 두 입력의 공통 토토 꽁 머니이 있습니다.
변수 함수 (하나는 변수 수의 인수를 취하는 것과 같이섹션 38.5.6)는 다형성이 될 수 있습니다 : 이것은 마지막 매개 변수를로 선언하여 달성됩니다.variadic
AnyArray
또는variadic
29899_29919
. 실제 결과 유형을 일치시키고 결정하기 위해, 그러한 함수는 적절한 숫자를 작성한 것과 동일하게 동작합니다AnynonArray
또는anycompatiblenonArray
매개 변수.
문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면