이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.스포츠 토토 결과 42_007버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

8.1. 토토 결과 유형

토토 결과 유형은 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 : 문서 : 12 : 제 9 장 범퍼카 토토 및 연산자13932_14009

8.1.1. 정수 유형

유형smallint, 정수비긴트정수, 즉 분수 구성요소가 없는 다양한 범위의 토토 결과를 저장합니다. 허용된 범위를 벗어난 값을 저장하려고 하면 오류가 발생합니다.

유형정수범위, 저장소 크기 및 성능 간의 최상의 균형을 제공하므로 일반적인 선택입니다. 그만큼smallint유형은 일반적으로 디스크 공간이 부족한 경우에만 사용됩니다. 그만큼비긴트유형은 다음과 같은 경우에 사용하도록 설계되었습니다.정수유형이 부족합니다.

SQL정수 유형만 지정정수(또는int), smallint비긴트. 유형 이름int2, int4int8다른 확장 프로그램에서도 사용되는 확장 프로그램입니다SQL데이터베이스 시스템.

8.1.2. 임의의 정밀도 토토 결과

유형토토 결과매우 많은 자릿수의 토토 결과를 저장할 수 있습니다. 특히 화폐 금액 및 정확성이 요구되는 기타 수량을 저장하는 데 권장됩니다. 로 계산토토 결과값은 가능한 경우 정확한 결과(예: 덧셈, 뺄셈, 곱셈)를 산출합니다. 그러나 계산은토토 결과값은 정수 유형이나 다음 섹션에 설명된 부동 소수점 유형에 비해 매우 느립니다.

우리는 아래에서 다음 용어를 사용합니다:정밀도토토 결과은 정수 중 유효 자릿수의 총 개수, 즉 소수점 양쪽 자리까지의 자릿수입니다. 그만큼규모토토 결과은 소수점 오른쪽에 있는 소수 부분의 소수 자릿수입니다. 따라서 토토 결과 23.5141의 정밀도는 6이고 소수 자릿수는 4입니다. 정수는 소수 자릿수가 0인 것으로 간주될 수 있습니다.

a의 최대 정밀도와 최대 스케일 모두토토 결과열을 구성할 수 있습니다. 유형의 열을 선언하려면토토 결과다음 구문을 사용하세요:

토토 결과(정밀도, 규모)

정밀도는 양수여야 하며, 척도는 0 또는 양수여야 합니다. 또는:

토토 결과(정밀도)

크기 0을 선택합니다. 지정:

토토 결과

정밀도나 배율이 없으면 정밀도 구현 한계까지 모든 정밀도와 배율의 토토 결과 값을 저장할 수 있는 열을 생성합니다. 이런 종류의 열은 입력 값을 특정 규모로 강제하지 않지만,토토 결과선언된 규모가 있는 열은 입력 값을 해당 규모로 강제 변환합니다. (그만큼SQL표준에는 기본 배율 0이 필요합니다. 즉, 정수 정밀도로 강제 변환됩니다. 우리는 이것이 약간 쓸모없다고 생각합니다. 이식성이 염려된다면 항상 정밀도와 배율을 명시적으로 지정하세요.)

참고

유형 선언에 명시적으로 지정된 경우 허용되는 최대 정밀도는 1000입니다.토토 결과지정된 정밀도가 없으면 다음에 설명된 제한이 적용됩니다.표 8.2.

저장할 값의 스케일이 선언된 열의 스케일보다 큰 경우 시스템은 값을 지정된 소수 자릿수로 반올림합니다. 그런 다음 소수점 왼쪽의 자릿수가 선언된 정밀도에서 선언된 소수점을 뺀 값을 초과하면 오류가 발생합니다.

토토 결과 값은 추가 선행 또는 후행 0 없이 물리적으로 저장됩니다. 따라서 선언된 열의 전체 자릿수와 크기는 고정된 할당이 아니라 최대값입니다. (이런 의미에서토토 결과유형이 다음과 더 유사함varchar(n)보다문자(n).) 실제 저장 요구 사항은 4자리의 10진수 그룹당 2바이트에 3~8바이트의 오버헤드를 더한 것입니다.

일반 토토 결과 값 외에도토토 결과유형은 특수 값을 허용합니다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행)

8.1.3. 부동 소수점 유형

데이터 유형진짜그리고배정밀도은 부정확하고 가변 정밀도 토토 결과 유형입니다. 현재 지원되는 모든 플랫폼에서 이러한 유형은 다음을 구현합니다.IEEE기본 프로세서, 운영 체제 및 컴파일러가 지원하는 범위 내에서 이진 부동 소수점 산술(각각 단정밀도 및 배정밀도)에 대한 표준 754입니다.

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

  • 정확한 저장 및 계산(금전 금액 등)이 필요한 경우 다음을 사용하세요.토토 결과대신 입력하세요.

  • 중요한 사항에 대해 이러한 유형을 사용하여 복잡한 계산을 수행하려는 경우, 특히 경계 사례(무한대, 언더플로)의 특정 동작에 의존하는 경우 구현을 신중하게 평가해야 합니다.

  • 두 개의 부동 소수점 값이 동일한지 비교하는 것이 항상 예상대로 작동하지 않을 수도 있습니다.

현재 지원되는 모든 플랫폼에서,실제유형의 범위는 약 1E-37 ~ 1E+37이며 정밀도는 최소 6자리 소수입니다. 그만큼배정밀도유형의 범위는 약 1E-307에서 1E+308이며 정밀도는 최소 15자리입니다. 값이 너무 크거나 작으면 오류가 발생합니다. 입력 토토 결과의 정밀도가 너무 높으면 반올림이 발생할 수 있습니다. 0과 구별되는 것으로 표현할 수 없는 0에 너무 가까운 토토 결과는 언더플로 오류를 발생시킵니다.

기본적으로 부동 소수점 값은 가장 짧고 정확한 십진수 표현으로 텍스트 형식으로 출력됩니다. 생성된 10진수 값은 동일한 이진 정밀도로 표현할 수 있는 다른 값보다 실제로 저장된 이진 값에 더 가깝습니다. (단, 출력값은 현재 절대 아닙니다.정확히입력 루틴이 가장 가까운 짝수로 반올림 규칙을 제대로 준수하지 않는 광범위한 버그를 피하기 위해 표현 가능한 두 값 사이의 중간입니다.) 이 값은 최대 17개의 유효 십진수를 사용합니다.float8값, 최대 9자리플로트4값.

참고

이 가장 짧고 정확한 출력 형식은 과거 반올림 형식보다 생성 속도가 훨씬 빠릅니다.

이전 버전에서 생성된 출력과의 호환성을 위해PostgreSQL, 그리고 출력 정밀도를 줄일 수 있도록extra_float_digits25754_25904float4) 또는 15(forfloat8) 유효 십진수. 음수 값을 설정하면 자릿수가 더 줄어듭니다. 예를 들어 -2는 출력을 각각 4자리 또는 13자리로 반올림합니다.

모든 값extra_float_digits0보다 크면 가장 짧고 정확한 형식이 선택됩니다.

참고

정확한 값을 원하는 응용 프로그램은 역사적으로 설정해야 했습니다.extra_float_digits3으로 가서 얻으세요. 버전 간 호환성을 최대화하려면 계속 그렇게 해야 합니다.

일반적인 토토 결과 값 외에도 부동 소수점 유형에는 몇 가지 특수 값이 있습니다:


무한대
-무한대
NaN

IEEE 754 특수 값을 나타냅니다.무한대, 음의 무한대토토 결과가 아님, 각각. SQL 명령에서 이러한 값을 상수로 작성할 때는 앞뒤에 따옴표를 붙여야 합니다. 예를 들면 다음과 같습니다.UPDATE 테이블 SET x = '-무한대'. 입력 시 이러한 문자열은 대소문자를 구분하지 않고 인식됩니다.

참고

IEEE754는 이를 명시합니다NaN다른 부동 소수점 값(포함과 동일하게 비교해서는 안 됩니다.NaN). 부동 소수점 값을 트리 기반 인덱스에서 정렬하고 사용할 수 있도록 하려면,PostgreSQL대접NaN값은 동일하고 모든 비-보다 큽니다.NaN값.

PostgreSQL또한 SQL 표준 표기법을 지원합니다플로트그리고부동(p)부정확한 토토 결과 유형을 지정하는 데 사용됩니다. 여기,p최소 허용 정밀도를 지정합니다.바이너리토토 결과.PostgreSQL수락플로트(1)플로트(24)다음을 선택하여실제입력, 동안플로트(25)플로트(53)선택배정밀도. 의 값p허용된 범위를 벗어나면 오류가 발생합니다.플로트정밀도가 지정되지 않은 것은 의미가 있습니다배정밀도.

8.1.4. 직렬 유형

참고

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

데이터 유형smallserial, 연재그리고큰 직렬은 실제 유형이 아니지만 단지 고유 식별자 열을 생성하기 위한 표기 편의일 뿐입니다(AUTO_INCREMENT다른 데이터베이스에서 지원되는 속성). 현재 구현에서는 다음을 지정합니다.

테이블 생성테이블 이름 (
    열이름연속
);

다음을 지정하는 것과 동일합니다.

시퀀스 생성테이블 이름_열이름_seq AS 정수;
테이블 만들기테이블 이름 (
    열이름정수 NOT NULL DEFAULT nextval('테이블 이름_열이름_seq')
);
시퀀스 변경테이블 이름_열이름_seq 소유자테이블 이름.열이름;

따라서 우리는 정수 열을 생성하고 그 기본값이 시퀀스 생성기에서 할당되도록 준비했습니다. 에이NULL이 아님null 값을 삽입할 수 없도록 제약 조건이 적용됩니다. (대부분의 경우 다음을 첨부하고 싶을 수도 있습니다.고유또는기본 키중복 값이 ​​실수로 삽입되는 것을 방지하기 위한 제약이지만 자동으로 수행되지는 않습니다.) 마지막으로 시퀀스는 다음과 같이 표시됩니다.소유자열, 즉 열이나 테이블이 삭제되면 삭제됩니다.

참고

왜냐하면smallserial, 연재그리고큰 직렬은 시퀀스를 사용하여 구현되므로 행이 삭제되지 않더라도 열에 나타나는 값 시퀀스에 "구멍"이나 공백이 있을 수 있습니다. 시퀀스에서 할당된 값은 해당 값을 포함하는 행이 테이블 열에 성공적으로 삽입되지 않은 경우에도 여전히 "사용"됩니다. 예를 들어 삽입 트랜잭션이 롤백되는 경우 이런 일이 발생할 수 있습니다. 보다다음값()inPostgreSQL : 문서 : 12 : 9.16. 토토 베이 조작 기능자세한 내용은.

순서의 다음 값을 다음에 삽입하려면연재열, 다음을 지정하십시오.연재열에는 기본값이 할당되어야 합니다. 이는의 열 목록에서 해당 열을 제외하여 수행할 수 있습니다.삽입문장 또는를 사용하여기본값키워드.

유형 이름연재그리고연재4동등함: 둘 다 생성정수열. 유형 이름큰 직렬그리고연속8같은 방식으로 작업합니다. 단, 다음을 생성합니다.비긴트열.큰 직렬2개 이상의 사용이 예상되는 경우 사용해야 합니다.31테이블 수명 동안 식별자. 유형 이름smallserial그리고연속2또한 동일한 방식으로 작동합니다. 단, 다음을 생성합니다.작은int열.

다음을 위해 생성된 시퀀스연재소유 열이 삭제되면 열도 자동으로 삭제됩니다. 열을 삭제하지 않고 시퀀스를 삭제할 수 있지만 이렇게 하면 열 기본 표현식이 강제로 제거됩니다.