포스트그레SQL데이터 토토 꽁 머니은 기본 토토 꽁 머니, 컨테이너 토토 꽁 머니, 도메인 및 의사 토토 꽁 머니으로 나눌 수 있습니다.
기본 유형은 다음과 같습니다.정수, 이는 수준 아래에 구현됩니다.SQL언어(일반적으로 C와 같은 저급 언어). 이는 일반적으로 추상 데이터 토토 꽁 머니으로 알려진 것에 해당합니다.포스트그레SQL사용자가 제공한 기능을 통해서만 이러한 유형에 대해 작동할 수 있으며 사용자가 설명하는 정도까지만 이러한 유형의 동작을 이해합니다. 내장된 기본 유형은 다음에 설명되어 있습니다.장 8.
열거(enum) 토토 꽁 머니은 기본 토토 꽁 머니의 하위 범주로 간주될 수 있습니다. 가장 큰 차이점은 단지SQL명령, 하위 수준 프로그래밍 없음. 참조섹션 8.7더 많은 정보를 원하시면.
포스트그레SQL세 가지 종류가 있습니다“컨테이너”토토 꽁 머니 - 다른 토토 꽁 머니의 여러 값을 포함하는 토토 꽁 머니입니다. 이는 배열, 복합 및 범위입니다.
배열은 모두 동일한 유형의 여러 값을 보유할 수 있습니다. 기본 유형, 복합 유형, 범위 유형, 도메인 유형별로 배열 유형이 자동으로 생성됩니다. 그러나 배열의 배열은 없습니다. 토토 꽁 머니 시스템에 관한 한 다차원 배열은 1차원 배열과 동일합니다. 참조PostgreSQL : 문서 : 17 : 8.15. 토토 꽁 머니더 많은 정보를 원하시면.
복합 토토 꽁 머니 또는 행 토토 꽁 머니은 사용자가 테이블을 생성할 때마다 생성됩니다. 사용하는 것도 가능합니다토토 꽁 머니 생성정의하다“독립형”연결된 테이블이 없는 복합 토토 꽁 머니입니다. 복합 토토 꽁 머니은 단순히 연관된 필드 이름이 있는 토토 꽁 머니 목록입니다. 복합 토토 꽁 머니의 값은 필드 값의 행 또는 레코드입니다. 참조PostgreSQL : 문서 : 17 : 8.16. 스포츠 토토 결과 유형더 많은 정보를 원하시면.
범위 토토 꽁 머니은 범위의 하한과 상한인 동일한 토토 꽁 머니의 두 값을 보유할 수 있습니다. 범위 토토 꽁 머니은 사용자가 생성하지만 몇 가지 기본 제공 토토 꽁 머니이 있습니다. 참조PostgreSQL : 문서 : 17 : 8.17. 롤 토토 유형더 많은 정보를 원하시면.
도메인은 특정 기본 유형을 기반으로 하며 다양한 목적으로 기본 유형과 상호 교환 가능합니다. 그러나 도메인에는 유효한 값을 기본 유형이 허용하는 하위 집합으로 제한하는 제약 조건이 있을 수 있습니다. 도메인은 다음을 사용하여 생성됩니다.SQL명령도메인 만들기. 참조PostgreSQL : 문서 : 17 : 8.18. 도메인 젠 토토더 많은 정보를 원하시면.
몇 가지가 있습니다“의사 토토 꽁 머니”특별한 목적으로. 의사 토토 꽁 머니은 테이블의 열이나 컨테이너 유형의 구성 요소로 나타날 수 없지만 함수의 인수 및 결과 유형을 선언하는 데 사용할 수 있습니다. 이는 토토 꽁 머니 시스템 내에서 특수 클래스의 함수를 식별하는 메커니즘을 제공합니다.표 8.27기존 의사 토토 꽁 머니을 나열합니다.
특별한 관심을 끄는 의사 토토 꽁 머니은 다음과 같습니다.다형성 토토 꽁 머니, 선언하는 데 사용됨다형성 함수. 이 강력한 기능을 사용하면 단일 함수 정의가 다양한 데이터 유형에 대해 작동할 수 있으며, 특정 데이터 유형은 특정 호출에서 실제로 전달된 데이터 유형에 따라 결정됩니다. 다형성 토토 꽁 머니은 다음과 같습니다.표 36.1. 몇 가지 사용 예가 다음에 나와 있습니다.섹션 36.5.11.
표 36.1. 다형성 토토 꽁 머니
| 이름 | 가족 | 설명 |
|---|---|---|
모든 요소 |
단순 | 함수가 모든 데이터 토토 꽁 머니을 허용함을 나타냅니다. |
모든 배열 |
단순 | 함수가 모든 배열 데이터 유형을 허용함을 나타냅니다. |
anynonarray |
간단함 | 함수가 배열이 아닌 데이터 토토 꽁 머니을 허용함을 나타냅니다. |
anyenum |
단순 | 함수가 모든 열거형 데이터 토토 꽁 머니을 허용함을 나타냅니다(참조PostgreSQL : 문서 : 17 : 8.7. 열거 된 스포츠 토토 베트맨) |
anyrange |
간단한 | 함수가 모든 범위 데이터 토토 꽁 머니을 허용함을 나타냅니다(참조PostgreSQL : 문서 : 17 : 8.17. 롤 토토 유형) |
anymultirange |
간단한 | 함수가 모든 다중 범위 데이터 토토 꽁 머니을 허용함을 나타냅니다(참조PostgreSQL : 문서 : 17 : 8.17. 롤 토토 유형) |
모든 호환 가능 |
공통 | 함수가 여러 인수를 공통 데이터 유형으로 자동 승격하여 모든 데이터 유형을 허용함을 나타냅니다. |
모든 호환 어레이 |
공통 | 함수가 여러 인수를 공통 데이터 유형으로 자동 승격하여 모든 배열 데이터 유형을 허용함을 나타냅니다. |
any호환비배열 |
공통 | 함수가 배열이 아닌 모든 데이터 유형을 허용하고 여러 인수를 공통 데이터 유형으로 자동 승격함을 나타냅니다. |
모든 호환 범위 |
공통 | 함수는 여러 인수를 공통 데이터 유형으로 자동 승격하여 모든 범위 데이터 유형을 허용함을 나타냅니다. |
any Compatiblemultirange |
공통 | 함수가 여러 인수를 공통 데이터 유형으로 자동 승격하여 모든 다중 범위 데이터 유형을 허용함을 나타냅니다. |
다형성 인수와 결과는 서로 연결되어 있으며 다형성 함수를 호출하는 쿼리가 구문 분석될 때 특정 데이터 유형으로 확인됩니다. 다형성 인수가 두 개 이상인 경우 입력 값의 실제 데이터 유형은 아래 설명과 같이 일치해야 합니다. 함수의 결과 유형이 다형성이거나 다형성 토토 꽁 머니의 출력 매개변수를 갖는 경우 해당 결과의 유형은 아래 설명된 대로 다형성 입력의 실제 유형에서 추론됩니다.
다음을 위해“간단한”다형성 토토 꽁 머니 계열의 일치 및 추론 규칙은 다음과 같이 작동합니다.
각 위치(인수 또는 반환 값)는 다음과 같이 선언되었습니다.모든 요소특정 실제 데이터 유형을 가질 수 있지만 특정 호출에서는 모두 다음과 같아야 합니다.같은실제 유형. 각 직위는 다음과 같이 선언됩니다.임의배열모든 배열 데이터 유형을 가질 수 있지만 마찬가지로 모두 동일한 유형이어야 합니다. 마찬가지로, 다음과 같이 선언된 위치는anyrange모두 동일한 범위 토토 꽁 머니이어야 합니다. 마찬가지로anymultirange.
또한, 선언된 직위가 있는 경우모든 배열및 기타 선언모든 요소, 실제 배열 토토 꽁 머니은임의배열위치는 요소가 다음에 나타나는 것과 동일한 유형인 배열이어야 합니다.모든 요소위치.anynonarray다음과 정확히 동일하게 취급됩니다.모든 요소, 그러나 실제 토토 꽁 머니이 배열 토토 꽁 머니이 아니어야 한다는 추가 제약 조건을 추가합니다.anyenum다음과 정확히 동일하게 취급됩니다.모든 요소, 그러나 실제 토토 꽁 머니은 열거형 토토 꽁 머니이어야 한다는 추가 제약 조건을 추가합니다.
마찬가지로, 선언된 직위가 있는 경우anyrange및 기타 선언모든 요소또는임의배열, 실제 범위 토토 꽁 머니은anyrange위치는 하위 유형이 다음에 나타나는 유형과 동일한 범위여야 합니다.모든 요소위치 및 요소 토토 꽁 머니과 동일아무 배열위치. 선언된 직위가 있는 경우anymultirange, 실제 다중 범위 토토 꽁 머니에는 선언된 매개변수와 일치하는 범위가 포함되어야 합니다.아무범위및 선언된 매개변수와 일치하는 기본 요소모든 요소그리고임의 배열.
따라서 하나 이상의 인수 위치가 다형성 토토 꽁 머니으로 선언되면 최종 효과는 실제 인수 유형의 특정 조합만 허용된다는 것입니다. 예를 들어, 다음과 같이 선언된 함수는같음(모든 요소, 모든 요소)동일한 데이터 토토 꽁 머니인 한 두 개의 입력 값을 사용합니다.
함수의 반환 값이 다형성 토토 꽁 머니으로 선언되면 역시 다형성인 인수 위치가 하나 이상 있어야 하며 다형성 인수에 제공된 실제 데이터 유형이 해당 호출의 실제 결과 유형을 결정합니다. 예를 들어 배열 첨자 메커니즘이 아직 없다면 다음과 같이 첨자를 구현하는 함수를 정의할 수 있습니다.subscript(anyarray, 정수)는 모든 요소를 반환합니다.. 이 선언은 실제 첫 번째 인수를 배열 유형으로 제한하고 구문 분석기가 실제 첫 번째 인수 유형에서 올바른 결과 유형을 추론할 수 있도록 합니다. 또 다른 예는 다음과 같이 선언된 함수입니다.f(anyarray)는 anyenum을 반환합니다.열거형 토토 꽁 머니의 배열만 허용합니다.
대부분의 경우, 파서는 동일한 계열에 있는 다른 다형성 토토 꽁 머니의 인수로부터 다형성 결과 유형에 대한 실제 데이터 유형을 추론할 수 있습니다. 예를 들어임의배열에서 추론할 수 있음모든 요소또는 그 반대. 예외는 다음 유형의 다형성 결과입니다.아무범위다음 유형의 인수가 필요합니다.anyrange; 그것은 추론할 수 없다임의배열또는모든 요소인수. 이는 동일한 하위 토토 꽁 머니을 가진 여러 범위 토토 꽁 머니이 있을 수 있기 때문입니다.
참고anynonarray그리고anyenum별도의 유형 변수를 나타내지 않습니다. 그들은 다음과 같은 유형입니다.모든 요소, 추가 제약 조건이 있습니다. 예를 들어 함수를 다음과 같이 선언합니다.f(모든 요소, 모든 항목)다음과 같이 선언하는 것과 같습니다f(anyenum, anyenum): 두 실제 인수는 모두 동일한 열거형 토토 꽁 머니이어야 합니다.
다음을 위해“공통”다형 유형 계열의 일치 및 추론 규칙은 다음과 거의 동일하게 작동합니다.“간단한”패밀리에는 한 가지 주요 차이점이 있습니다. 인수가 암시적으로 단일 공통 유형으로 변환될 수 있는 한 인수의 실제 유형은 동일할 필요가 없습니다. 공통 유형은 과 동일한 규칙에 따라 선택됩니다.유니온및 관련 구성(참조사설 토토 PostgreSQL : 문서 : 17 : 10.5. 연합, 사례 및 관련 구성). 공통 유형의 선택은 실제 유형을 고려합니다.모든 호환 가능그리고any호환비배열입력, 배열 요소 토토 꽁 머니모든 호환 어레이입력, 범위 하위 토토 꽁 머니모든 호환 범위입력 및 다중 범위 하위 토토 꽁 머니any Compatiblemultirange입력. 만일any호환비배열이 있는 경우 공통 유형은 배열이 아닌 유형이어야 합니다. 공통 유형이 식별되면,모든 호환 가능그리고any Compatiblenonarray위치는 자동으로 해당 토토 꽁 머니으로 변환되고 인수는모든 호환 어레이위치는 해당 토토 꽁 머니의 배열 토토 꽁 머니으로 자동으로 변환됩니다.
하위 유형만 알고 범위 유형을 선택할 수 있는 방법이 없으므로 다음을 사용하십시오.모든 호환 범위및/또는any Compatiblemultirange해당 유형으로 선언된 모든 인수는 동일한 실제 범위 및/또는 다중 범위 유형을 갖고 해당 유형의 하위 유형이 선택한 공통 유형과 일치해야 하므로 범위 값을 캐스팅할 필요가 없습니다. 마찬가지로아무범위그리고anymultirange, 다음의 사용모든 호환 범위그리고다중 범위함수 결과 유형으로 다음이 필요합니다.모든 호환 범위또는any Compatiblemultirange인수.
아무것도 없음을 주목하세요any Compatibleenum유형. 일반적으로 열거형 유형에 대한 암시적 캐스트가 없기 때문에 이러한 유형은 별로 유용하지 않습니다. 즉, 서로 다른 열거형 입력에 대한 공통 유형을 확인할 방법이 없다는 의미입니다.
그“간단한”그리고“공통”다형성 계열은 두 개의 독립적인 토토 꽁 머니 변수 세트를 나타냅니다. 예를 들어 생각해 보세요.
CREATE FUNCTION myfunc(a 모든 요소, b 모든 요소,
c 모두 호환 가능, d 모두 호환 가능)
호환되는 모든 AS를 반환합니다 ...
이 함수의 실제 호출에서 처음 두 입력은 정확히 동일한 유형을 가져야 합니다. 마지막 두 입력은 공통 유형으로 승격 가능해야 하지만 이 유형은 처음 두 입력의 유형과 관련이 있을 필요가 없습니다. 결과는 마지막 두 입력의 공통 유형을 갖게 됩니다.
가변 함수(다음과 같이 가변 개수의 인수를 취하는 함수섹션 36.5.6)는 다형성일 수 있습니다. 이는 마지막 매개변수를 다음과 같이 선언하여 수행됩니다.VARIADIC 모든 배열또는VARIADIC 모든 호환 어레이. 인수 일치 및 실제 결과 토토 꽁 머니 결정을 위해 이러한 함수는 적절한 개수의를 작성한 것처럼 동작합니다.anynonarray또는any호환비배열매개변수.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.