숫자 스포츠 토토은 2바이트, 4바이트, 8바이트 정수, 4바이트 및 8바이트 부동 소수점 숫자, 선택 가능한 정밀도 소수로 구성됩니다.표 8.2사용 가능한 스포츠 토토을 나열합니다.
표 8.2. 숫자 스포츠 토토
| 이름 | 저장소 크기 | 설명 | 범위 |
|---|---|---|---|
smallint |
2바이트 | 작은 범위의 정수 | -32768 ~ +32767 |
정수 |
4바이트 | 정수에 대한 일반적인 선택 | -2147483648 ~ +2147483647 |
비긴트 |
8바이트 | 대규모 정수 | -9223372036854775808 ~ +9223372036854775807 |
십진수 |
변수 | 사용자 지정 정밀도, 정확함 | 소수점 이하 최대 131072자리; 소수점 이하 16383자리까지 |
숫자 |
변수 | 사용자 지정 정밀도, 정확함 | 소수점 이하 최대 131072자리; 소수점 이하 16383자리까지 |
실제 |
4바이트 | 가변-정밀도, 부정확 | 십진수 6자리 정밀도 |
배정밀도 |
8바이트 | 가변-정밀도, 부정확 | 십진수 15자리 정밀도 |
smallserial |
2바이트 | 작은 자동 증가 정수 | 1 ~ 32767 |
연재 |
4바이트 | 자동 증가하는 정수 | 1 ~ 2147483647 |
큰 직렬 |
8바이트 | 큰 자동 증가 정수 | 1 ~ 9223372036854775807 |
숫자 스포츠 토토에 대한 상수 구문은 다음에 설명되어 있습니다.섹션 4.1.2. 숫자 스포츠 토토에는 해당 산술 연산자 및 함수의 전체 세트가 있습니다. 참조PostgreSQL : 문서 : 11 : 9 장. 토토 캔 및 연산자13932_14009
스포츠 토토smallint, 정수및비긴트정수, 즉 분수 구성요소가 없는 다양한 범위의 숫자를 저장합니다. 허용된 범위를 벗어난 값을 저장하려고 하면 오류가 발생합니다.
스포츠 토토정수범위, 저장소 크기 및 성능 간의 최상의 균형을 제공하므로 일반적인 선택입니다.smallint스포츠 토토은 일반적으로 디스크 공간이 부족한 경우에만 사용됩니다.비긴트스포츠 토토은 다음과 같은 경우에 사용하도록 설계되었습니다.정수스포츠 토토이 부족합니다.
SQL정수 스포츠 토토만 지정정수(또는int), smallint및비긴트. 스포츠 토토 이름int2, int4및int8다른 확장 프로그램에서도 사용되는 확장 프로그램입니다SQL데이터베이스 시스템.
스포츠 토토숫자매우 많은 자릿수의 숫자를 저장할 수 있습니다. 특히 금전적 금액 및 정확성이 요구되는 기타 수량을 저장하는 데 권장됩니다. 로 계산숫자값은 가능한 경우 정확한 결과(예: 덧셈, 뺄셈, 곱셈)를 산출합니다. 그러나 계산은숫자값은 정수 스포츠 토토이나 다음 섹션에 설명된 부동 소수점 스포츠 토토에 비해 매우 느립니다.
우리는 아래에서 다음 용어를 사용합니다:정밀도의숫자은 정수 중 유효 자릿수의 총 개수, 즉 소수점 양쪽 자리의 자릿수입니다.규모의숫자은 소수점 오른쪽에 있는 소수 부분의 소수 자릿수입니다. 따라서 숫자 23.5141의 정밀도는 6이고 소수 자릿수는 4입니다. 정수는 소수 자릿수가 0인 것으로 간주될 수 있습니다.
a의 최대 정밀도와 최대 스케일 모두숫자열을 구성할 수 있습니다. 스포츠 토토의 열을 선언하려면숫자다음 구문을 사용하세요:
숫자(정밀도,규모)
정밀도는 양수여야 하며, 배율은 0 또는 양수여야 합니다. 또는:
숫자(정밀도)
크기 0을 선택합니다. 지정:
숫자
정밀도나 배율이 없으면 정밀도 구현 한계까지 모든 정밀도와 배율의 숫자 값을 저장할 수 있는 열을 생성합니다. 이런 종류의 열은 입력 값을 특정 규모로 강제하지 않지만,숫자선언된 규모가 있는 열은 입력 값을 해당 규모로 강제 변환합니다. (그SQL표준에는 기본 배율 0이 필요합니다. 즉, 정수 정밀도로 강제 변환됩니다. 우리는 이것이 약간 쓸모없다고 생각합니다. 이식성이 염려된다면 항상 정밀도와 배율을 명시적으로 지정하세요.)
스포츠 토토 선언에 명시적으로 지정된 경우 허용되는 최대 정밀도는 1000입니다.숫자지정된 정밀도가 없으면 다음에 설명된 제한이 적용됩니다.표 8.2.
저장할 값의 스케일이 선언된 열의 스케일보다 큰 경우 시스템은 값을 지정된 소수 자릿수로 반올림합니다. 그런 다음 소수점 왼쪽의 자릿수가 선언된 정밀도에서 선언된 소수점을 뺀 값을 초과하면 오류가 발생합니다.
숫자 값은 추가 선행 또는 후행 0 없이 물리적으로 저장됩니다. 따라서 선언된 열의 전체 자릿수와 소수 자릿수는 고정된 할당이 아니라 최대값입니다. (이런 의미에서숫자스포츠 토토이 다음과 더 유사함varchar(보다n)문자(.) 실제 저장 요구 사항은 4개의 십진수 그룹에 대해 2바이트에 3~8바이트의 오버헤드를 더한 것입니다.n)
일반 숫자 값 외에도숫자스포츠 토토은 특수 값을 허용합니다NaN, 의미“숫자 아님”. 모든 작업NaN다른 결과 생성NaN. 이 값을 SQL 명령의 상수로 작성할 때는 앞뒤에 따옴표를 붙여야 합니다. 예를 들면 다음과 같습니다.UPDATE 테이블 SET x = 'NaN'. 입력 시 문자열NaN대소문자를 구분하지 않고 인식됩니다.
대부분의 구현에서“숫자가 아님”개념,NaN다른 숫자 값( 포함)과 동일한 것으로 간주되지 않습니다.NaN). 허용하기 위해숫자트리 기반 색인에서 정렬 및 사용되는 값PostgreSQL대접NaN값은 동일하고 모든 비-보다 큽니다.NaN값.
스포츠 토토십진수그리고숫자동등합니다. 두 스포츠 토토 모두 다음의 일부입니다.SQL표준.
값을 반올림할 때,숫자type은 0에서 멀어지는 방향으로 반올림하지만 (대부분의 시스템에서)진짜그리고배정밀도가장 가까운 짝수에 반올림 관계를 입력합니다. 예를 들면:
선택 x, round(x::numeric) AS num_round, round(x::배정밀도) AS dbl_round generate_series(-3.5, 3.5, 1)에서 x; 엑스 | 라운드 수 | 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행)
데이터 스포츠 토토진짜그리고배정밀도은 부정확하고 가변 정밀도 숫자 스포츠 토토입니다. 실제로 이러한 스포츠 토토은 일반적으로 다음을 구현합니다.IEEE기본 프로세서, 운영 체제 및 컴파일러가 지원하는 범위 내에서 이진 부동 소수점 산술(각각 단정밀도 및 배정밀도)에 대한 표준 754입니다.
부정확함은 일부 값이 내부 형식으로 정확하게 변환될 수 없으며 근사치로 저장되므로 값을 저장하고 검색할 때 약간의 불일치가 나타날 수 있음을 의미합니다. 이러한 오류를 관리하고 계산을 통해 오류가 전파되는 방법은 수학과 컴퓨터 과학 전체 분야의 주제이므로 다음 사항을 제외하고 여기에서는 논의하지 않습니다.
정확한 저장 및 계산(금전 금액 등)이 필요한 경우 다음을 사용하세요.숫자대신 입력하세요.
중요한 사항에 대해 이러한 스포츠 토토을 사용하여 복잡한 계산을 수행하려는 경우, 특히 경계 사례(무한대, 언더플로)의 특정 동작에 의존하는 경우 구현을 신중하게 평가해야 합니다.
두 개의 부동 소수점 값이 동일한지 비교하는 것이 항상 예상대로 작동하지 않을 수도 있습니다.
대부분의 플랫폼에서진짜스포츠 토토의 범위는 최소 1E-37부터 1E+37까지이며 정밀도는 십진수 6자리 이상입니다.배정밀도type의 범위는 일반적으로 약 1E-307에서 1E+308 사이이며 정밀도는 최소 15자리입니다. 값이 너무 크거나 작으면 오류가 발생합니다. 입력 숫자의 정밀도가 너무 높으면 반올림이 발생할 수 있습니다. 0과 구별되는 것으로 표현할 수 없는 0에 너무 가까운 숫자는 언더플로 오류를 발생시킵니다.
그extra_float_digits설정은 부동 소수점 값이 출력을 위해 텍스트로 변환될 때 포함되는 추가 유효 자릿수를 제어합니다. 기본값은0, 출력은 PostgreSQL이 지원하는 모든 플랫폼에서 동일합니다. 이 값을 늘리면 저장된 값을 더 정확하게 나타내는 출력이 생성되지만 이식이 불가능할 수 있습니다.
일반적인 숫자 값 외에도 부동 소수점 스포츠 토토에는 몇 가지 특수 값이 있습니다:
무한대
-무한대
NaN
IEEE 754 특수 값을 나타냅니다.“무한대”, “음의 무한대”및“숫자가 아님”입니다. (부동 소수점 연산이 IEEE 754를 따르지 않는 시스템에서는 이러한 값이 예상대로 작동하지 않을 수 있습니다.) SQL 명령에서 이러한 값을 상수로 작성할 때는 앞뒤에 따옴표를 붙여야 합니다.UPDATE 테이블 SET x = '-무한대'. 입력 시 이러한 문자열은 대소문자를 구분하지 않고 인식됩니다.
IEEE754는 다음을 명시합니다NaN다른 부동 소수점 값(포함과 동일하게 비교해서는 안 됩니다.NaN). 부동 소수점 값을 트리 기반 인덱스에서 정렬하고 사용할 수 있도록 하려면,PostgreSQL대접NaN값은 동일하고 모든 비-보다 큽니다.NaN값.
PostgreSQL또한 SQL 표준 표기법을 지원합니다플로트그리고부동(부정확한 숫자 스포츠 토토을 지정하는 데 사용됩니다. 여기,p)p최소 허용 정밀도를 지정합니다.바이너리숫자.PostgreSQL수락플로트(1)에플로트(24)다음을 선택하여진짜입력, 동안플로트(25)에플로트(53)선택배정밀도. 의 값p허용된 범위를 벗어나면 오류가 발생합니다.플로트정밀도가 지정되지 않은 것은 의미가 있습니다이중 정밀도.
가정은진짜그리고배정밀도가수에 각각 정확히 24비트와 53비트가 있는 것은 IEEE 표준 부동 소수점 구현에 적합합니다. IEEE가 아닌 플랫폼에서는 약간 다를 수 있지만 단순화를 위해 동일한 범위를 사용합니다.p모든 플랫폼에서 사용됩니다.
이 섹션에서는 자동 증가 열을 생성하는 PostgreSQL 관련 방법을 설명합니다. 또 다른 방법은 다음에 설명된 SQL 표준 ID 열 기능을 사용하는 것입니다.테이블 생성.
데이터 스포츠 토토smallserial, 연재그리고큰 직렬은 실제 스포츠 토토이 아니지만 단지 고유 식별자 열을 생성하기 위한 표기상의 편의일 뿐입니다(AUTO_INCREMENT다른 데이터베이스에서 지원되는 속성). 현재 구현에서는 다음을 지정합니다.
테이블 생성테이블 이름(열이름연속 );
다음을 지정하는 것과 동일합니다.
시퀀스 생성테이블 이름_열이름_seq AS 정수; 테이블 만들기테이블 이름(열이름정수 NOT NULL DEFAULT nextval('테이블 이름_열이름_seq') ); 시퀀스 변경테이블 이름_열이름_seq 소유자테이블 이름.열이름;
따라서 우리는 정수 열을 생성하고 그 기본값이 시퀀스 생성기에서 할당되도록 준비했습니다. 갑NULL이 아님null 값을 삽입할 수 없도록 제약 조건이 적용됩니다. (대부분의 경우 다음을 첨부하고 싶을 수도 있습니다.고유또는기본 키중복 값이 실수로 삽입되는 것을 방지하기 위한 제약이지만 자동으로 수행되지는 않습니다.) 마지막으로 시퀀스는 다음과 같이 표시됩니다.“소유자:”열, 즉 열이나 테이블이 삭제되면 삭제됩니다.
왜냐하면smallserial, 연재그리고큰 직렬은 시퀀스를 사용하여 구현되므로 행이 삭제되지 않더라도 열에 나타나는 값 시퀀스에 "구멍"이나 공백이 있을 수 있습니다. 시퀀스에서 할당된 값은 해당 값을 포함하는 행이 테이블 열에 성공적으로 삽입되지 않은 경우에도 여전히 "사용"됩니다. 예를 들어 삽입 트랜잭션이 롤백되는 경우 이런 일이 발생할 수 있습니다. 참조다음값()에PostgreSQL : 문서 : 11 : 9.16. 스포츠 토토 사이트 조작 기능자세한 내용은.
다음 시퀀스 값을 삽입하려면연재열, 다음을 지정하십시오.연재열에는 기본값이 할당되어야 합니다. 이는의 열 목록에서 해당 열을 제외하여 수행할 수 있습니다.삽입문장 또는를 사용하여기본값키워드.
스포츠 토토 이름연재그리고연재4동등함: 둘 다 생성정수열. 스포츠 토토 이름큰 직렬그리고연속8같은 방식으로 작업합니다. 단, 다음을 생성합니다.비긴트열.큰 직렬2개 이상의 사용이 예상되는 경우 사용해야 합니다.31테이블 수명 동안 식별자. 스포츠 토토 이름smallserial그리고연속2또한 동일한 방식으로 작동합니다. 단, 다음을 생성합니다.작은int열.
다음을 위해 생성된 시퀀스연재소유 열이 삭제되면 열도 자동으로 삭제됩니다. 열을 삭제하지 않고 시퀀스를 삭제할 수 있지만 이렇게 하면 열 기본 표현식이 강제로 제거됩니다.