2025 년 9 월 4 일 :롤 토토 18 RC 1 릴리스!

8.1. 숫자 롤 토토

숫자 롤 토토은 2, 4 및 8 바이트 정수, 4 바이트 및 8 바이트 플로팅 포인트 숫자 및 선택 가능한 프리렉션 소수로 구성됩니다.표 8.2사용 가능한 롤 토토을 나열합니다.

표 8.2. 숫자 롤 토토

이름 스토리지 크기 설명 범위
smallint 2 바이트 작은 범위 정수 -32768 ~ +32767
정수 4 바이트 정수를위한 전형적인 선택 -2147483648 ~ +2147483647
bigint 8 바이트 대형 정수 -9223372036854775808 ~ +922337203685475807
십진 변수 사용자 지정 정밀도, 정확한 소수점 이전의 최대 131072 자리; 소수점 이후 최대 16383 자리
11848_11857 변수 사용자 지정 정밀도, 정확한 소수점 이전의 최대 131072 자리; 소수점 이후 최대 16383 자리
Real 4 바이트 가변-프레시션, eencact 6 십진 자릿수 정밀
이중 정밀도 8 바이트 가변-프리 보도, 부정 행위 15 소수 자릿수 정밀
SmallSerial 2 바이트 작은 자동화 정수 1 ~ 32767
Serial 4 바이트 AutoinCrementing Integer 1 ~ 2147483647
bigserial 8 바이트 대형 자동화 정수 1 ~ 9223372036854775807

숫자 롤 토토에 대한 상수의 구문은에 설명되어 있습니다.섹션 4.1.2. 숫자 롤 토토에는 해당 산술 연산자 및 기능의 전체 세트가 있습니다. 참조PostgreSQL : 문서 : 13 : 9 장. 스포츠 토토자세한 내용. 다음 섹션에서는 롤 토토을 자세히 설명합니다.

8.1.1. 정수 롤 토토

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

롤 토토정수범위, 스토리지 크기 및 성능간에 최상의 균형을 제공하므로 일반적인 선택입니다. 그만큼smallint롤 토토은 일반적으로 디스크 공간이 프리미엄 인 경우에만 사용됩니다. 그만큼bigint롤 토토은의 범위 일 때 사용하도록 설계되었습니다.Integer롤 토토은 불충분합니다.

SQL정수 롤 토토 만 지정Integer(또는int),smallintbigint. 롤 토토 이름int2, int4int8다른 사람들도 사용하는 확장자입니다SQL데이터베이스 시스템.

8.1.2. 임의의 정밀 번호

롤 토토숫자숫자를 매우 많은 숫자로 저장할 수 있습니다. 특히 정확성이 필요한 금전적 금액 및 기타 수량을 저장하는 데 권장됩니다. 계산숫자값은 가능한 경우 정확한 결과, 예를 들어, 첨가, 빼기, 곱셈을 산출합니다. 그러나 계산숫자값은 정수 롤 토토 또는 다음 섹션에 설명 된 부동 소수점 롤 토토에 비해 매우 느립니다.

우리는 다음 약관을 사용합니다.정밀of숫자는 정수의 총 숫자, 즉 소수점의 양쪽에 숫자 수입니다. 그만큼스케일of숫자는 소수점의 오른쪽에있는 분수 부분의 소수점 숫자 수입니다. 따라서 숫자 23.5141의 정밀도는 6이고 스케일은 4입니다. 정수는 스케일이 0 인 것으로 간주 될 수 있습니다.

최대 정밀도와 최대 스케일숫자열을 구성 할 수 있습니다. 롤 토토의 열을 선언하려면숫자구문 사용 :

숫자 (정밀, 스케일)

정밀도는 양수 여야합니다. 또는 :

숫자 (정밀)

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

숫자

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

Note

롤 토토 선언에 명시 적으로 지정 될 때 허용되는 최대 정밀도는 1000;숫자지정된 정밀도가 없으면에 설명 된 한계가 적용됩니다.표 8.2.

저장 될 값의 척도가 열의 선언 된 스케일보다 크면 시스템은 지정된 분수 숫자로 값을 반올림합니다. 그런 다음 소수점의 왼쪽 숫자가 선언 된 정밀도에서 선언 된 스케일을 초과하면 오류가 제기됩니다.

숫자 값은 추가 선행 또는 후행 제로없이 물리적으로 저장됩니다. 따라서, 열의 선언 된 정밀도와 스케일은 고정 할당이 아니라 최대입니다. (이런 의미에서숫자롤 토토은 더 비슷합니다varchar (n)보다char (n).) 실제 스토리지 요구 사항은 4 자리 숫자의 각 그룹에 대해 2 개의 바이트와 3-8 바이트 오버 헤드입니다.

일반 숫자 값 외에도숫자롤 토토은 특별한 값을 허용Nan, 의미not-number. 모든 작업Nan다른 생산량Nan. SQL 명령 에서이 값을 상수로 작성할 때는 그 주위에 인용문을 넣어야합니다 (예 :업데이트 테이블 세트 X = 'NAN'. 입력에, 문자열NAN는 사례에 민감하지 않은 방식으로 인식됩니다.

Note

대부분의 구현에서not-number개념,NAN다른 숫자 값과 동등한 것으로 간주되지 않습니다 (포함NAN). 허용하기 위해숫자트리 기반 인덱스에서 정렬 및 사용될 값,롤 토토취급NAN값은 동일하고 모든 비보다NAN값.

롤 토토십진and숫자동등합니다. 두 롤 토토 모두의 일부입니다.SQL표준.

값을 반올림 할 때숫자타입 라운드는 0에서 멀어지고 (대부분의 기계에서)Real이중 정밀롤 토토은 가장 가까운 짝수와 묶입니다. 예를 들어:

선택 X,
  round (x :: 숫자) num_round,
  dbl_round로 라운드 (x :: 이중 정밀)
Generate_Series (-3.5, 3.5, 1)에서 x로;
  x | num_round | dbl_round
------+----------+------------
 -3.5 |        -4 |        -4
 -2.5 |        -3 |        -2
 -1.5 |        -2 |        -2
 -0.5 |        -1 |        -0
  0.5 |         1 |         0
  1.5 |         2 |         2
  2.5 |         3 |         2
  3.5 |         4 |         4
(8 줄)

8.1.3. 부동 소수점 롤 토토

데이터 롤 토토Realand이중 정밀가변적이고 가변적 인 숫자 롤 토토입니다. 현재 지원되는 모든 플랫폼에서 이러한 롤 토토은의 구현입니다.IEEE이진 부유 포인트 산술에 대한 표준 754 (각각 단일 및 이중 정밀도), 기본 프로세서, 운영 체제 및 컴파일러가 지원하는 정도까지.

emectact는 일부 값을 내부 형식으로 정확하게 변환 할 수없고 근사치로 저장되어 값을 저장하고 검색하면 약간의 불일치가 나타날 수 있음을 의미합니다. 이러한 오류를 관리하고 계산을 통해 전파되는 방법을 관리하는 것은 수학 및 컴퓨터 과학의 전체 지점의 주제이며 다음과 같은 점을 제외하고 여기에서 논의되지 않습니다.

  • 정확한 저장 및 계산이 필요한 경우 (금액 금액) 사용하십시오.숫자대신 입력.

  • 특히 경계 사례 (무한대, 언더 플로)에서 특정 행동에 의존하는 경우 중요한 모든 것에 대해 이러한 롤 토토으로 복잡한 계산을 수행하려면 구현을 신중하게 평가해야합니다..

  • 평등에 대한 두 개의 부동 소수점 값 비교가 항상 예상대로 작동하는 것은 아닙니다.

현재 지원되는 모든 플랫폼에서Real롤 토토의 범위는 최소 6 자리의 정밀도로 약 1E-37 ~ 1E+37입니다. 그만큼이중 정밀롤 토토의 범위는 약 15 자리 이상의 정밀도로 약 1E-307 ~ 1E+308입니다. 너무 크거나 너무 작은 값으로 인해 오류가 발생합니다. 입력 번호의 정밀도가 너무 높으면 반올림이 발생할 수 있습니다. 0과는 별개로 표현할 수없는 0에 너무 가까운 숫자는 언더 플로 오류가 발생합니다.

기본적으로 부동 소수점 값은 가장 짧은 정확한 소수점 표현으로 텍스트 형태로 출력됩니다. 생성 된 소수점 값은 동일한 이진 정밀도로 표현할 수있는 다른 값보다 실제 저장된 이진 값에 더 가깝습니다. (그러나 출력 값은 현재 절대정확히입력 루틴이 가장 둥근 가장 큰 규칙을 제대로 존중하지 않는 광범위한 버그를 피하기 위해 두 가지 대표 값 사이의 중간 웨이.float8값, 그리고 최대 9 자리float4값.

Note

이 가장 짧은 프레이즈 출력 형식은 히스토리 둥근 형식보다 생성하기가 훨씬 빠릅니다.

이전 버전의 출력과의 호환성롤 토토, 출력 정밀도를 줄이기 위해extra_float_digits매개 변수를 사용하여 대신 둥근 소수점 출력을 선택할 수 있습니다. 값 0 설정 값을 6로 반올림하는 이전 기본값 (forfloat4) 또는 15 (forfloat8) 중요한 소수점 자리. 음수 값을 설정하면 숫자 수가 더 줄어 듭니다. 예를 들어 -2는 각각 4 자리 또는 13 자리로 출력됩니다.

모든 값extra_float_digits0보다 클이 가장 짧은 프레이즈 형식을 선택합니다.

참고

정확한 값을 원하는 응용 프로그램은 역사적으로 설정해야했습니다extra_float_digits~ 3을 얻습니다. 버전 간의 호환성을 극대화하려면 계속해야합니다.

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


Infinity
-infinity
NAN

이들은 IEEE 754 특수 값을 나타냅니다Infinity, 부정적인 무한대not-a-number각각. SQL 명령에서 이러한 값을 상수로 작성할 때는 그 주위에 인용문을 넣어야합니다 (예 :업데이트 테이블 세트 x = '-infinity'. 입력시,이 문자열은 사례에 민감하지 않은 방식으로 인식됩니다.

Note

IEEE754 지정NAN다른 부동 소수점 값과 동일하게 비교해서는 안됩니다 (포함NAN). 부동 소수점 값을 트리 기반 인덱스에 정렬하고 사용하도록 허용하기 위해PostgreSQL취급NAN값은 모두 동일하고 모든 비보다NAN값.

롤 토토SQL 표준 표기법도 지원floatandfloat (P)부정확 한 숫자 롤 토토을 지정합니다. 여기,P최소 허용 가능한 정밀도를 지정BINAGE숫자.PostgreSQLAccucctsfloat (1)tofloat (24)선택대로Real타입, whilefloat (25)tofloat (53)select이중 정밀. 의 값P허용 범위 외부에서 오류를 그립니다.float정밀도가 지정되지 않은 상태에서 평균으로 간주됩니다이중 정밀.

8.1.4. 일련 롤 토토

Note

이 섹션에서는 AutoinCrementing 열을 생성하는 PostgreSQL 특정 방법을 설명합니다. 또 다른 방법은에 설명 된 SQL 표준 ID 열 기능을 사용하는 것입니다.테이블 생성.

데이터 롤 토토SmallSerial, Serialandbigserial| 진정한 롤 토토은 아니지만 고유 식별자 열을 생성하기위한 표기법 편의성 일뿐입니다 (유사auto_increment다른 데이터베이스에서 지원하는 속성). 현재 구현에서 : 지정

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

지정과 동일합니다.

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

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

Note

왜냐하면SmallSerial, Serialandbigserial시퀀스를 사용하여 구현되며, 행에 나타나지 않더라도 열에 나타나는 일련의 값에 "구멍"또는 갭이있을 수 있습니다. 시퀀스에서 할당 된 값은 해당 값을 포함하는 행이 테이블 열에 성공적으로 삽입되지 않더라도 여전히 "사용"됩니다. 예를 들어, 트랜잭션 삽입이 롤백되는 경우 발생할 수 있습니다. 보다nextVal ()inPostgreSQL : 문서 : 13 : 9.17. 젠 토토자세한 내용.

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

롤 토토 이름SerialandSerial4동등합니다 : 둘 다 Create정수열. 롤 토토 이름bigserialSerial8a를 제외하고는 같은 방식으로 작동합니다bigint열.bigserial33164_3322231테이블의 수명에 걸친 식별자. 롤 토토 이름SmallSerialandSerial2a를 제외하고는 같은 방식으로 작동합니다.smallint열.

a를 위해 생성 된 시퀀스Serial소유 열이 삭제되면 열이 자동으로 삭제됩니다. 열을 떨어 뜨리지 않고 시퀀스를 삭제할 수 있지만 열 기본 표현식의 제거를 강제로 제거합니다.

수정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면