이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다스포츠 윈 토토 결과 42_007버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

8.1. 윈 토토 유형

윈 토토 유형은 2, 4 및 8 바이트 정수로 구성됩니다. 4 바이트 플로팅 지점 번호 및 선택 가능한--프리렉션 소수점.표 8-2사용 가능한 유형을 나열합니다.

표 8-2. 윈 토토 유형

이름 스토리지 크기 설명 범위
smallint 2 바이트 작은 범위 정수 -32768 ~ +32767
정수 4 바이트 정수에 대한 일반적인 선택 -2147483648 ~ +2147483647
bigint 8 바이트 대형 정수 -9223372036854775808 ~ 922337203685475807
10901_10910 변수 사용자 지정 정밀도, 정확한 제한 없음
윈 토토 변수 사용자 지정 정밀도, 정확한 제한 없음
Real 4 바이트 가변----프레임, eencact 6 십진 자릿수 정밀
이중 정밀 8 바이트 가변-프리 보도, 미지 15 소수 자릿수 정밀
Serial 4 바이트 AutoinCrementing Integer 1 ~ 2147483647
bigserial 8 바이트 대형 자동화 정수 1 ~ 9223372036854775807

윈 토토 유형에 대한 상수의 구문은에 설명되어 있습니다.섹션 4.1.2. 윈 토토 유형에는 해당 전체 세트가 있습니다 산술 연산자 및 기능. 참조9 장자세한 내용. 그만큼 다음 섹션에서는 유형을 자세히 설명합니다.

8.1.1. 정수 유형

유형smallint, Integerbigint저장 정수, 즉, 분수 구성 요소가없는 윈 토토, 다양한 범위의. 외부에서 값을 저장하려고 시도합니다 허용 범위는 오류가 발생합니다.

유형정수일반적인 선택입니다. 범위, 스토리지 크기 및 성능. 그만큼smallint타입 IS 일반적으로 디스크 공간이 프리미엄 인 경우에만 사용됩니다. 그만큼bigint타입은 인 경우에만 사용해야합니다.정수범위는 충분하지 않습니다 후자는 확실히 더 빠릅니다.

thebigint유형이 작동하지 않을 수 있습니다 컴파일러 지원에 의존하기 때문에 모든 플랫폼에서 올바르게 8 바이트 정수. 그러한 지원이없는 기계에서bigint동일하게Integer(그러나 여전히 8 바이트를 차지합니다 저장). 그러나 우리는 합리적인 플랫폼을 알지 못합니다 이것이 사실 인 경우.

SQL정수 유형Integer(또는int) 및smallint. 유형bigint및 유형 이름int2, int4int8는 다양한와 공유되는 확장입니다 다른SQL데이터베이스 시스템.

8.1.2. 임의의 정밀도 윈 토토

유형윈 토토윈 토토를 저장할 수 있습니다 최대 1000 자리의 정밀도 및 계산을 수행합니다. 정확히. 특히 금전적 저장에 권장됩니다 정확성이 필요한 양 및 기타 수량. 그러나, 산술윈 토토값은입니다 정수 유형 또는 다음 섹션에 설명 된 부동 소수점 유형.

다음에서 우리는이 용어를 사용합니다.스케일of윈 토토is 분수 부분의 십진수 수, 오른쪽 소수점. 그만큼정밀of윈 토토총 수는 유의미합니다 전체 윈 토토의 윈 토토, 즉 윈 토토 수 소수점의 양쪽. 따라서 윈 토토 23.5141에는 a가 있습니다 6의 정밀도와 4 개의 스케일. 정수를 고려할 수 있습니다. 스케일이 0입니다.

최대 정밀도와 최대 스케일윈 토토열을 구성 할 수 있습니다. 에게 유형의 열 선언윈 토토사용 통사론

윈 토토 (정밀, 스케일)

정밀도는 양수, 스케일 0 또는 양수 여야합니다. 또는

윈 토토 (정밀)

0의 스케일을 선택합니다. 지정

윈 토토

정밀도 또는 스케일이없는 열을 만듭니다. 정밀도와 스케일의 윈 토토 값은 최대까지 저장할 수 있습니다. 정밀도에 대한 구현 한도. 이런 종류의 열 입력 값을 특정 척도로 강요하지는 않지만윈 토토선언 된 스케일의 열 입력 값을 해당 척도로 강요합니다. (그만큼SQL표준은 기본 스케일 0이 필요합니다. 즉, 정수 정밀도에 대한 강요. 우리는 이것을 조금 찾습니다 쓸모 없는. 이식성이 걱정된다면 항상 지정하십시오 정밀도와 규모는 명시 적으로.)

저장할 값의 척도가 열의 선언 된 스케일, 시스템은 값을 반올림합니다. 지정된 수의 분수 윈 토토로. 그렇다면 소수점의 왼쪽 윈 토토 수는 선언 된 정밀도 마이너스 선언 된 스케일은 오류입니다 높은.

윈 토토 값은 추가없이 물리적으로 저장됩니다 주도권 또는 후행. 따라서 선언 된 정밀도와 열의 척도는 고정 할당이 아닌 최대입니다. (이것에서 감각윈 토토유형은 더 비슷합니다varchar (n)보다char (n).) 실제 스토리지 요구 사항은 4 개의 각 그룹에 대해 2 바이트입니다. 10 진수 윈 토토, 8 바이트 오버 헤드

일반 윈 토토 값 외에도윈 토토유형은 특별한 값을 허용NAN, 의미"Not-Number". 모든 작업Nan다른 생산량NAN. 이 값을 SQL 명령에서 상수로 쓸 때 예를 들어 그 주위에 인용문을 넣어야합니다업데이트 테이블 세트 x = 'nan'. 입력에, 문자열Nana 사례에 민감한 방식.

유형십진and윈 토토동등합니다. 두 유형 모두의 일부입니다.SQL표준.

8.1.3. 부동 소수점 유형

데이터 유형Realand이중 정밀부적절하고 가변적입니다 윈 토토 유형. 실제로 이러한 유형은 일반적으로입니다 구현IEEE이진 플로팅 포인트 산술 용 표준 754 (단일 및 이중 정밀도) 기본 프로세서, 운영 체제 및 컴파일러 지원 그것.

eencect는 일부 값을 정확하게 변환 할 수 없음을 의미합니다 내부 형식으로, 근사치로 저장됩니다. 값을 저장하고 인쇄하는 것은 약간의 불일치. 이러한 오류 및 전파 방법 관리 계산을 통해 전체 지점의 주제입니다. 수학 및 컴퓨터 과학은 논의되지 않을 것입니다 또한 다음 사항을 제외하고는 다음과 같습니다.

  • 정확한 저장 및 계산이 필요한 경우 (예 : 금전 금액의 경우 사용하십시오.윈 토토대신 입력.

  • 이들로 복잡한 계산을하고 싶다면 특히 의존하는 경우 중요한 모든 것을위한 유형 경계 사례의 특정 행동 (무한대, 언더 플로), 구현을 신중하게 평가해야합니다.

  • 평등에 대한 두 개의 부동 소수점 값 비교 또는 예상대로 작동하지 않을 수 있습니다.

대부분의 플랫폼에서Real유형은 a 최소 1e-37 ~ 1e+37의 범위 6 개 이상의 정밀도 십진수. 그만큼이중 정밀타입 일반적으로 약 1e-307 ~ 1e+308의 범위는 다음과 같습니다. 최소 15 자리의 정밀도. 너무 큰 값 또는 너무 작 으면 오류가 발생합니다. 반올림이 발생할 수 있습니다 입력 번호의 정밀도가 너무 높습니다. 너무 가까운 윈 토토 제로와는 별개로 표현할 수없는 ZERO 언더 플로 오류를 유발합니다.

일반 윈 토토 값 외에도 부동 소수점 유형에는 몇 가지 특별한 값이 있습니다.

Infinity
-infinity
NAN

이것은 IEEE 754를 나타냅니다 특별 값"Infinity", "부정적인 무한""Not-Number"21367_21625업데이트 테이블 세트 x = '인피니티'. 입력시이 문자열은 있습니다 사례에 민감한 방식으로 인식됩니다.

PostgreSQL또한 지원됩니다 SQL 표준 표기법floatandfloat (P)부정확 한 윈 토토 유형을 지정합니다. 여기,P허용 가능한 최소를 지정합니다 이진 윈 토토의 정밀도.PostgreSQL알 수 있습니다float (1)to22219_22230AS 선택Real타입, whilefloat (25)tofloat (53)select이중 정밀. 의 값P허용 범위 외부에서 an 오류.float정밀도가 지정되지 않음 의미로 옮겨 져 있습니다이중 정밀.

참고 :이전PostgreSQL7.4, 정밀도float (P)는 많은 것을 의미하도록 받아 들였다 십진수. 이것은 SQL과 일치하도록 수정되었습니다 정밀도가 측정되도록 지정하는 표준 이진 윈 토토.Real이중 정밀Mantissa에서 각각 24 비트와 53 비트가 있습니다. IEEE 표준 부동 소수점 구현에 수정하십시오. 비 지구 플랫폼에서는 조금 벗어날 수 있지만 단순성 동일한 범위의P모든 플랫폼에서 사용됩니다.

8.1.4. 일련 유형

데이터 유형Serialandbigserial는 진정한 유형이 아니라 단지 a 고유 식별자 열을 설정하기위한 표기법 편의성 (와 유사auto_increment다른 데이터베이스에서 지원하는 속성). 현재에서 구현, 지정

테이블 생성TableName(Colname시리얼
);

지정과 동일합니다.

시퀀스 만들기​​TableName_Colname_Seq;
테이블 작성TableName(ColnameInteger null default nextVal ( 'TableName_Colname_seq ')
);
Alter SequenceTableName_Colname_Seq 소유TableName.Colname;

따라서 우리는 정수 열을 만들고 그 열을 정리했습니다. 시퀀스 생성기에서 할당 할 기본값. 에이NOT NULL제약 조건이 적용됩니다 널 값을 명시 적으로 삽입 할 수 없는지 확인하십시오. (대부분의 경우 a를 첨부하고 싶을 것입니다고유 한또는기본 키중복 값이 ​​삽입되는 것을 방지하기위한 제약 조건 사고이지만 이것은 자동이 아닙니다.) 마지막으로, 시퀀스는 표시"소유자"열이든 열이나 테이블이 떨어지면 삭제됩니다.

참고 :이전PostgreSQL 7.3, Serial암시고유 한. 이것은 더 이상 자동이 아닙니다. 직렬 열을 원한다면 독특한 제약이나 기본 키에 있어야합니다. 이제 다른 데이터 유형과 동일하게 지정됩니다.

시퀀스의 다음 값을 삽입하려면Serial열,를 지정합니다Serial열에 기본값을 할당해야합니다. 이것은 목록에서 열을 제외하여 수행 할 수 있습니다. 의 열삽입성명서, 또는 사용을 통해기본값키 단어.

유형 이름SerialandSerial4동등합니다 : 둘 다 Create정수열. 유형 이름bigserialandSerial8작업 그들이 a를 만드는 것을 제외하고 똑같은 방식으로bigint열.bigserial더 많은 사용을 예상하면 사용해야합니다. 231테이블의 수명에 걸친 식별자.

a에 대한 시퀀스Serial소유 열이있을 때 열이 자동으로 삭제됩니다 떨어졌다. 열을 떨어 뜨리지 않고 시퀀스를 떨어 뜨릴 수 있습니다. 그러나 이것은 열 기본값을 제거 할 것입니다 표현.