스포츠 토토 결과 유형은 일부 요소 유형의 값 스포츠 토토 결과를 나타내는 데이터 유형입니다 (스포츠 토토 결과라고 함)하위 유형). 예를 들어, 스포츠 토토 결과타임 스탬프
회의실이 예약되어있는 시간의 스포츠 토토 결과를 나타내는 데 사용될 수 있습니다. 이 경우 데이터 유형은입니다.tsrange
(짧은“타임 스탬프 범위”) 및타임 스탬프
하위 유형입니다. 하위 유형은 요소 값이 값 범위 내에 있는지 또는 그 후에 요소 값이 잘 정의되도록 총 순서를 가져야합니다.
스포츠 토토 결과 유형은 단일 스포츠 토토 결과 값의 많은 요소 값을 나타내며 겹치는 스포츠 토토 결과와 같은 개념을 명확하게 표현할 수 있기 때문에 유용합니다. 예약 목적으로 시간과 날짜 스포츠 토토 결과를 사용하는 것이 가장 분명한 예입니다. 그러나 가격대, 측정 스포츠 토토 결과는 기기에서 얻을 수 있습니다.
PostgreSQL은 다음과 같은 내장 스포츠 토토 결과 유형과 함께 제공됩니다.
int4Range
- 스포츠 토토 결과정수
int8Range
- 스포츠 토토 결과bigint
NumRange
- 스포츠 토토 결과숫자
tsrange
- 스포츠 토토 결과시간대가없는 타임 스탬프
TSTZRANGE
- 스포츠 토토 결과시간대가있는 타임 스탬프
Daterange
- 스포츠 토토 결과날짜
또한 자신의 스포츠 토토 결과 유형을 정의 할 수 있습니다. 보다유형 만들기자세한 내용은
테이블 예약 생성 (TsRange 동안 룸 int); 예약 값에 삽입하십시오 (1108, '[2010-01-01 14:30, 2010-01-01 15:30)'); -- 방지 int4Range (10, 20) @ 3을 선택하십시오. - 겹침 NumRange (11.1, 22.2) && NumRange (20.0, 30.0)를 선택하십시오. - 상한을 추출하십시오 상단 (int8Range (15, 25))를 선택하십시오. - 교차로를 계산하십시오 int4Range (10, 20) * int4Range (15, 25)를 선택하십시오. - 스포츠 토토 결과가 비어 있습니까? select isempty (numrange (1, 5));
모든 비어 있지 않은 스포츠 토토 결과에는 하한과 상한의 두 스포츠 토토 결과가 있습니다. 이 값 사이의 모든 지점은 스포츠 토토 결과에 포함됩니다. 포괄적 인 경계는 경계 지점 자체가 스포츠 토토 결과에도 포함되어 있음을 의미하는 반면, 독점 경계는 경계 지점이 스포츠 토토 결과에 포함되어 있지 않음을 의미합니다.
스포츠 토토 결과의 텍스트 형태에서 포괄적 인 하한은“[
”독점적 인 하한은“(
”. 마찬가지로 포괄적 인 상한은로 표시됩니다.“]
”, 독점 상한은에 표시됩니다.“)
”. (보다섹션 8.17.5자세한 내용은)
함수lower_inc
and어퍼_inc
스포츠 토토 결과 값의 하부 및 상한의 포괄 성을 테스트합니다.
스포츠 토토 결과의 하한을 생략 할 수 있습니다. 즉, 상한보다 적은 모든 값이 스포츠 토토 결과에 포함되어 있음을 의미합니다.(, 3]
. 마찬가지로, 스포츠 토토 결과의 상한이 생략되면 하한보다 큰 모든 값이 스포츠 토토 결과에 포함됩니다. 하부와 상한이 모두 생략되면 요소 유형의 모든 값이 스포츠 토토 결과에있는 것으로 간주됩니다. 포괄적으로 누락 된 바운드를 지정하면 자동으로 독점적으로 변환됩니다 (예 :[,]
(,)
. 이러한 결 측값을 +/- 인피니티로 생각할 수는 있지만 특수 스포츠 토토 결과 유형 값이며 모든 스포츠 토토 결과 요소 유형의 +/- 인피니티 값으로 간주됩니다..
개념이있는 요소 유형“Infinity”명시 적 바운드 값으로 사용할 수 있습니다. 예를 들어 타임 스탬프 범위가있는[오늘, 인피니티)
스페셜 제외타임 스탬프
valueInfinity
, while[오늘, 인피니티]
포함하여[오늘,)
and[오늘,]
.
함수lower_inf
and어퍼 _inf
스포츠 토토 결과의 무한 하부 및 상한을 테스트합니다.
스포츠 토토 결과 값에 대한 입력은 다음 패턴 중 하나를 따라야합니다.
(하위 바운드
,상한
) (하위 바운드
,상한
] [하위 바운드
,상한
) [하위 바운드
,상한
] 비어 있는
괄호 또는 브래킷은 이전에 설명 된 바와 같이 하부 및 상한이 배타적인지 또는 포괄적인지를 나타냅니다. 최종 패턴은빈
는 빈 스포츠 토토 결과 (포인트가없는 스포츠 토토 결과)를 나타냅니다.
the하위 바운드
하위 유형에 대한 유효한 입력 인 문자열이거나 하한을 나타내지 않도록 비어있을 수 있습니다. 비슷하게,상한
하위 유형에 대한 유효한 입력 인 문자열이거나 상한을 나타내지 않기 위해 비어있을 수 있습니다.
각 바운드 값을 사용하여 인용 할 수 있습니다"
(이중 인용) 문자. 바운드 값에 괄호 안, 괄호, 쉼표, 이중 인용문 또는 백 슬래시가 포함 된 경우에 필요합니다. 왜냐하면이 문자는 스포츠 토토 결과 구문의 일부로 간주되기 때문입니다. 인용 된 바운드 값에 이중 견적 또는 백 슬래시를 넣으려면 백 슬래시로 우선합니다. (또한, 두 배가 인용 된 바운드 값 내의 이중 인용문 쌍은 SQL 리터럴 문자열의 단일 따옴표 규칙과 유사하게 이중 인용 문자를 나타내는 것으로 간주됩니다.) 또는 인용문을 피하고 백 슬래시 에스케이프를 사용하여 모든 데이터 문자를 구문으로 보호 할 수 있습니다. 또한 빈 문자열 인 바운드 값을 작성하려면 쓰기""
, 아무것도 쓰지 않기 때문에 무한한 경계를 의미합니다.
범위 값 전후에 공백이 허용되지만 괄호 나 브래킷 사이의 모든 공백은 하부 또는 상한 값의 일부로 간주됩니다. (요소 유형에 따라 중요하거나 중요하지 않을 수도 있습니다.)
이 규칙은 복합 유형 리터럴에서 필드 값을 작성하는 것과 매우 유사합니다. 보다섹션 8.16.6추가 논평.
예 :
- 3 포함, 7은 포함되지 않으며 그 사이의 모든 지점을 포함합니다. '[3,7)':: int4Range; - 3 또는 7이 포함되어 있지 않지만 그 사이에 모든 지점이 포함되어 있습니다. 선택 '(3,7)':: int4Range; - 단일 포인트 4 만 포함합니다 '[4,4]':: int4Range; - 포인트가 포함되지 않습니다 (그리고 '빈'으로 정규화됩니다) 선택 '[4,4)':: int4Range;
각 범위 유형에는 범위 유형과 동일한 이름의 생성자 기능이 있습니다. 생성자 함수를 사용하는 것은 범위 문자가 상수를 작성하는 것보다 종종 더 편리합니다. 왜냐하면 경계 값의 추가 인용이 필요하지 않기 때문입니다. 생성자 함수는 2 ~ 3 개의 인수를 허용합니다. 두 가지 연계 형식은 표준 형태 (하한 포함, 상한 독점)로 범위를 구성하는 반면, 3- 연체 양식은 세 번째 인수에 의해 지정된 양식의 범위를 갖는 범위를 구성합니다. 세 번째 인수는 문자열 중 하나 여야합니다“()
”, “(]
”, “[)
”또는“[]
”. 예를 들어:
- 전체 형식은 : 하한, 상한 및 텍스트 인수를 나타냅니다. - 바운드의 포괄 성/독점 성. NumRange (1.0, 14.0, '(]')를 선택하십시오. - 세 번째 인수가 생략되면 '[)'가 가정됩니다. NumRange (1.0, 14.0)를 선택하십시오. - '(]'가 여기에 지정되어 있지만 표시에서는 값이 변환됩니다. -Canonical Form, Int8Range는 개별 범위 유형이므로 (아래 참조). int8Range (1, 14, '(]')를 선택하십시오. - 어느 한 바운드에 NULL을 사용하면 범위가 해당 측면에서 무한하게됩니다. NumRange (NULL, 2.2); 선택
개별 스포츠 토토 결과는 요소 유형이 잘 정의 된 것입니다“Step”:Integer
또는날짜
. 이러한 유형에서는 두 가지 요소가 인접 해 있다고 말할 수 있습니다. 이것은 주어진 두 값 사이의 다른 요소 값을 항상 (또는 거의 항상) 식별 할 수있는 연속 범위와 대조됩니다. 예를 들어,의 범위숫자
유형은 스포츠 토토 결과와 마찬가지로 연속적입니다타임 스탬프
. (일지라도타임 스탬프
정밀도가 제한되어 있으며 이론적으로 개별적으로 취급 될 수 있으므로 단계 크기가 일반적으로 관심이 없기 때문에 연속적인 것으로 간주하는 것이 좋습니다.)
개별 스포츠 토토 결과 유형에 대해 생각하는 또 다른 방법은 A에 대한 명확한 아이디어가 있다는 것입니다.“다음”또는“이전”각 요소 값에 대한 값. 이를 알면 원래 주어진 것 대신 다음 또는 이전 요소 값을 선택함으로써 범위 범위의 포용 적 표현과 독점적 표현을 변환 할 수 있습니다. 예를 들어 정수 범위 유형에서[4,8]
및(3,9)
동일한 값 세트를 나타냅니다. 그러나 이것은 숫자 이상의 범위에 적합하지 않을 것입니다.
개별 스포츠 토토 결과 유형에 a가 있어야합니다.Canonicalization요소 유형의 원하는 단계 크기를 알고있는 함수. 정식화 함수는 범위 유형의 등가 값을 동일한 표현, 특히 일관되게 포용 적 또는 독점적 인 경계를 갖도록 변환하는 것으로 청구됩니다. 정식화 함수가 지정되지 않으면, 다른 형식의 범위는 현실에서 동일한 값 세트를 나타낼 수 있지만 항상 불평등 한 것으로 취급됩니다..
내장 스포츠 토토 결과 유형int4Range
, int8Range
및Daterange
모두 하한을 포함하고 상한을 제외하는 표준 형태를 사용합니다. 즉,[)
. 그러나 사용자 정의 스포츠 토토 결과 유형은 다른 규칙을 사용할 수 있습니다.
사용자는 자신의 범위 유형을 정의 할 수 있습니다. 이를 수행하는 가장 일반적인 이유는 내장 스포츠 토토 결과 유형에 제공되지 않은 하위 유형에 대한 범위를 사용하기 때문입니다. 예를 들어, 새로운 범위 유형의 하위 유형을 정의하려면float8
:
범위로 FloatRange 유형 생성 ( 하위 유형 = float8, subtype_diff = float8mi ); '[1.234, 5.678]':: floatRange; 선택
왜냐하면float8
의미가 없음“Step”, 우리는이 예에서 표준화 함수를 정의하지 않습니다.
자신의 범위 유형을 정의하면 다른 하위 유형 B- 트리 연산자 클래스 또는 Collation을 사용할 수 있으므로 주어진 범위에 속하는 값을 결정하는 정렬 순서를 변경할 수 있습니다..
하위 유형이 연속 값이 아닌 이산을 갖는 것으로 간주되면유형 만들기
명령을 지정해야합니다표준
함수. 정식화 함수는 입력 범위 값을 취하며 다른 범위와 형식을 가질 수있는 동등한 범위 값을 반환해야합니다. 동일한 값 세트, 예를 들어 정수 범위를 나타내는 두 가지 범위의 표준 출력[1, 7]
and[1, 8)
는 동일해야합니다. 형식이 다른 두 개의 동등한 값이 항상 동일한 형식으로 동일한 값에 매핑되는 한 어떤 표현을 정식으로 선택하는지는 중요하지 않습니다. 포괄적/독점 범위 형식을 조정하는 것 외에도, 원하는 단계 크기가 하위 유형이 저장할 수있는 것보다 더 큰 경우, 표준화 함수는 경계 값을 반올림 할 수 있습니다. 예를 들어, 범위 유형 오버타임 스탬프
1 시간의 단계 크기를 가질 수 있는데,이 경우 표준화 함수는 한 시간이되지 않은 경계를 마무리하거나 대신 오류를 던져야합니다..
또한 GIST 또는 SP-GIST 인덱스와 함께 사용될 범위 유형은 하위 유형 차이를 정의해야합니다.subtype_diff
, 함수. (색인은 여전히 작동하지 않습니다subtype_diff
, 그러나 차이 함수가 제공되는 경우보다 상당히 덜 효율적일 수 있습니다.) 하위 유형 차이 함수는 하위 유형의 두 입력 값을 취하고 차이를 반환합니다 (예 :.x
마이너스y
)로 표시float8
값. 위의 예에서는 함수float8mi
정기의 기초float8
마이너스 운영자를 사용할 수 있습니다. 그러나 다른 하위 유형의 경우 일부 유형 변환이 필요합니다. 차이를 숫자로 표현하는 방법에 대한 창의적 생각도 필요할 수 있습니다. 가능한 가장 큰 정도,subtype_diff
함수는 선택한 연산자 클래스 및 Collation이 암시하는 정렬 순서에 동의해야합니다. 즉, 첫 번째 인수가 정렬 순서에 따라 두 번째 인수보다 클 때마다 결과가 긍정적이어야합니다.
덜 단순화되지 않은 예제subtype_diff
함수는 :
함수 생성 time_subtype_diff (x time, y time)는 float8을 반환합니다 '추출 (epoch from (x -y))'언어 SQL 엄격한 불변; 유형 타이머 랜지 생성 범위 (범위) 하위 유형 = 시간, subtype_diff = time_subtype_diff ); '[11:10, 23:00]':: Timerange;를 선택하십시오.
참조유형 생성범위 유형 생성에 대한 자세한 내용은
스포츠 토토 결과 유형의 테이블 열에 대해 GIST 및 SP-GIST 인덱스를 만들 수 있습니다. 예를 들어, GIST 인덱스를 만들려면 :
GIST를 사용하여 예약에서 인덱스 예약 _IDX 생성;
GIST 또는 SP-GIST 인덱스는 이러한 범위 연산자와 관련된 쿼리를 가속화 할 수 있습니다.=
, &&
, <@
, @
, <<
, ,
-|-
, &<
및&
(참조표 9.53자세한 내용은).
또한 스포츠 토토 결과 유형의 테이블 열에 대해 B- 트리 및 해시 인덱스를 만들 수 있습니다. 이러한 인덱스 유형의 경우 기본적으로 유용한 스포츠 토토 결과 작업은 평등입니다. 스포츠 토토 결과 값에 대해 정의 된 B- 트리 정렬 순서가 있으며 해당<
및운영자이지만 주문은 다소 임의적이며 일반적으로 실제 세계에서 유용하지 않습니다. Range Type 'B-Tree 및 Hash 지원은 주로 실제 인덱스 생성보다는 내부적으로 정렬 및 해싱을 허용하기위한 것입니다.
while고유 한
는 스칼라 값에 대한 자연스러운 제약 조건이며, 일반적으로 범위 유형에 부적합합니다. 대신, 제외 제약 조건이 종종 더 적합합니다 (참조테이블 작성 ... 제약 ... 제외). 제외 제약 조건은와 같은 제약 조건의 사양을 허용합니다.“비 겹침”범위 유형에서. 예를 들어:
테이블 예약 생성 ( tsrange 동안 GIST 사용 (& A) 동안 제외 );
그 제약 조건은 동시에 테이블에 존재하는 겹치는 값을 방지합니다 :
예약 값에 삽입하십시오 ( '[2010-01-01 11:30, 2010-01-01 15:00)'); 삽입 0 1 예약 값에 삽입하십시오 ( '[2010-01-01 14:45, 2010-01-01 15:45)'); 오류 : 충돌 키 값은 제외 제약 조건 "Reservation_During_Excl"을 위반합니다. 세부 사항 : 키 (기간) = ([ "2010-01-01 14:45:00", "2010-01-01 15:45:00")) 충돌 기존 키 (기간) = ([ "2010-01-01 11:30:00", "2010-01-01 15:00:00")..
당신은를 사용할 수 있습니다btree_gist
일반 스칼라 데이터 유형에 대한 배제 제약 조건을 정의하기위한 확장 및 최대 유연성을 위해 스포츠 토토 결과 제외와 결합 할 수 있습니다. 예를 들어, 이후btree_gist
가 설치되어 있으면 회의실 번호가 동일 한 경우에만 다음 제약 조건이 겹치는 범위를 거부합니다.
확장 생성 btree_gist; 테이블 생성 room_reservation ( 방 텍스트, tsrange 동안 GIST 사용 (& with &에서 with =, with =, with with with with with) ); room_reservation 값에 삽입하십시오 ( '123a', '[2010-01-01 14:00, 2010-01-01 15:00)'); 삽입 0 1 room_reservation 값에 삽입하십시오 ( '123a', '[2010-01-01 14:30, 2010-01-01 15:30)'); 오류 : 충돌 키 값은 제외 제약 조건 "room_reservation_room_during_excl"을 위반합니다. 세부 사항 : 키 (객실, 동안) = (123a, [ "2010-01-01 14:30:00", "2010-01-01 15:30:00") 충돌 기존 키 (객실, 동안) = (123a, [ "2010-01-01 14:00:00", "2010-01-01 15:00:00")). room_reservation 값에 삽입하십시오 ( '123b', '[2010-01-01 14:30, 2010-01-01 15:30)'); 삽입 0 1
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면