윈 토토 유형은 2바이트, 4바이트, 8바이트 정수로 구성됩니다. 4바이트 및 8바이트 부동 소수점 윈 토토 선택 가능한 정밀도 소수점.표 8-2사용 가능한 유형을 나열합니다.
표 8-2. 윈 토토 유형
| 이름 | 저장소 크기 | 설명 | 범위 |
|---|---|---|---|
| smallint | 2바이트 | 작은 범위의 정수 | -32768 ~ +32767 |
| 정수 | 4바이트 | 정수에 대한 일반적인 선택 | -2147483648 ~ +2147483647 |
| 비긴트 | 8바이트 | 대규모 정수 | -9223372036854775808 ~ 9223372036854775807 |
| 십진수 | 변수 | 사용자 지정 정밀도, 정확함 | 제한 없음 |
| 윈 토토 | 변수 | 사용자 지정 정밀도, 정확함 | 제한 없음 |
| 진짜 | 4바이트 | 변수-정밀도, 부정확 | 십진수 6자리 정밀도 |
| 배정밀도 | 8바이트 | 가변-정밀도, 부정확 | 십진수 15자리 정밀도 |
| 연재 | 4바이트 | 자동 증가하는 정수 | 1 ~ 2147483647 |
| 큰 직렬 | 8바이트 | 큰 자동 증가 정수 | 1 ~ 9223372036854775807 |
윈 토토 유형에 대한 상수 구문은 다음에 설명되어 있습니다.섹션 4.1.2. 윈 토토 유형에는 해당하는 전체 세트가 있습니다. 산술 연산자 및 함수. 참조제9장12381_12460
유형smallint, 정수및bigint저장 정수, 즉 분수 성분이 없는 윈 토토, 다양한 범위의. 외부에 값을 저장하려고 시도함 허용 범위로 인해 오류가 발생합니다.
유형정수일반적인 선택입니다. 범위, 저장 크기 및 성능.smallint유형은 다음과 같습니다. 일반적으로 디스크 공간이 부족한 경우에만 사용됩니다.비긴트유형은 다음과 같은 경우에만 사용해야 합니다.정수범위가 충분하지 않습니다. 왜냐하면 후자가 확실히 더 빠릅니다.
그비긴트유형이 작동하지 않을 수 있습니다. 컴파일러 지원에 의존하기 때문에 모든 플랫폼에서 올바르게 작동합니다. 8바이트 정수의 경우. 그러한 지원이 없는 머신에서는,비긴트다음과 동일하게 작동합니다정수(하지만 여전히 8바이트를 차지함) 저장). 그러나 우리는 합리적인 플랫폼을 알지 못합니다. 실제로는 이런 경우입니다.
SQL다음만 지정합니다. 정수 유형정수(또는int) 및smallint. 유형비긴트및 유형 이름int2, int4및int8확장 프로그램은 다양한 사용자와 공유됩니다. 기타SQL데이터베이스 시스템.
유형윈 토토번호를 저장할 수 있음 최대 1000자리의 정밀도로 계산을 수행합니다. 정확히. 특히 화폐 보관에 추천합니다 정확성이 요구되는 금액 및 기타 수량. 그러나 산술에 대해서는윈 토토값은 다음과 같습니다. 정수 유형에 비해 매우 느립니다. 다음 섹션에 설명된 부동 소수점 유형입니다.
다음에서 우리는 다음 용어를 사용합니다:규모의윈 토토이것은 오른쪽에 있는 분수 부분의 소수 자릿수 개수 소수점.정밀도의윈 토토중요한 총 개수입니다. 정수의 자릿수, 즉 윈 토토의 개수 소수점 양쪽. 따라서 윈 토토 23.5141에는 정밀도는 6이고 소수 자릿수는 4입니다. 정수는 다음과 같이 간주될 수 있습니다. 0의 척도를 갖습니다.
a의 최대 정밀도와 최대 규모 모두윈 토토열을 구성할 수 있습니다. 받는 사람 유형의 열 선언윈 토토사용 구문
윈 토토(정밀도, 규모)
정밀도는 양수여야 하며, 배율은 0 또는 양수여야 합니다. 또는,
윈 토토(정밀도)
0의 척도를 선택합니다. 지정
윈 토토
정밀도나 배율 없이 다음과 같은 열을 생성합니다. 모든 정밀도 및 배율의 윈 토토 값을 최대 1개까지 저장할 수 있습니다. 정밀도에 대한 구현 한계. 이런 종류의 칼럼 입력 값을 특정 규모로 강제하지 않지만윈 토토선언된 규모가 있는 열 입력 값을 해당 규모로 강제합니다. (그SQL표준에는 기본 배율 0이 필요합니다. 즉, 정수 정밀도로 강제 변환됩니다. 우리는 이것을 조금 발견합니다. 쓸모없다. 이식성이 염려된다면 항상 다음을 지정하십시오. 정밀도와 배율을 명시적으로 지정합니다.)
저장할 값의 규모가 열의 규모가 선언되면 시스템은 값을 반올림합니다. 지정된 소수 자릿수까지. 그런 다음, 소수점 왼쪽 자릿수가 해당 윈 토토를 초과합니다. 선언된 정밀도에서 선언된 스케일을 뺀 경우 오류는 다음과 같습니다. 제기되었습니다.
윈 토토 값은 추가 작업 없이 물리적으로 저장됩니다. 선행 또는 후행 0. 따라서 선언된 정밀도와 열의 규모는 고정 할당이 아니라 최대값입니다. (이에 감지하다윈 토토유형이 다음과 더 유사함varchar(n)보다문자(n).) 실제 저장 요구 사항은 4개 그룹당 2바이트입니다. 10진수, 8바이트 오버헤드.
일반 윈 토토 값 외에도윈 토토유형은 특수 값을 허용합니다NaN, 의미"윈 토토 아님". 모든 작업NaN다른 결과를 산출NaN. 이 값을 SQL 명령의 상수로 쓰면 예를 들어, 주위에 따옴표를 넣어야 합니다.UPDATE 테이블 SET x = 'NaN'. 입력 시 문자열NaN다음에서 인식됩니다. 대소문자를 구분하지 않습니다.
유형십진수그리고윈 토토동등합니다. 두 유형 모두 다음의 일부입니다.SQL표준.
데이터 유형진짜그리고배정밀도부정확하고 가변 정밀도입니다. 윈 토토 유형. 실제로 이러한 유형은 일반적으로 구현IEEE이진 부동 소수점 연산을 위한 표준 754(단일 및 각각 배정밀도) 기본 프로세서, 운영 체제 및 컴파일러 지원 그것.
정확하지 않음은 일부 값을 정확하게 변환할 수 없음을 의미합니다. 내부 형식으로 변환되어 근사값으로 저장되므로 값을 저장하고 다시 인쇄하면 약간 보일 수 있습니다. 불일치. 오류 관리 및 전파 방법 계산을 통해 전체 지점의 주제입니다. 수학과 컴퓨터 과학은 논의되지 않습니다. 다음 사항을 제외하고는 여기에서 더 자세히 설명합니다.
정확한 저장 및 계산이 필요한 경우(예: 금액의 경우), 다음을 사용하세요.윈 토토대신 입력하세요.
이것들로 복잡한 계산을 하고 싶다면 특히 당신이 의존하는 경우 중요한 것의 유형 경계 경우(무한대, 언더플로)의 특정 동작 구현을 주의 깊게 평가해야 합니다.
두 개의 부동 소수점 값이 동일한지 비교하는 것은 또는 예상대로 작동하지 않을 수 있습니다.
대부분의 플랫폼에서진짜유형에는 범위는 최소 1E-37 ~ 1E+37이고 정밀도는 최소 6입니다. 십진수.배정밀도유형 일반적으로 범위는 약 1E-307에서 1E+308입니다. 최소 15자리의 정밀도. 값이 너무 크거나 너무 작으면 오류가 발생합니다. 다음과 같은 경우 반올림이 발생할 수 있습니다. 입력 윈 토토의 정밀도가 너무 높습니다. 윈 토토가 너무 가깝습니다. 0과 구별되는 것으로 표현할 수 없는 0은 언더플로 오류가 발생합니다.
일반 윈 토토 값 외에도 부동 소수점 유형에는 몇 가지 특수 값이 있습니다.
무한대
-무한대
NaN
포스트그레SQL또한 지원합니다 SQL 표준 표기법플로트그리고부동(p)부정확한 윈 토토 유형을 지정하기 위한 것입니다. 여기,p허용 가능한 최소값을 지정합니다. 이진수의 정밀도.포스트그레SQL수락플로트(1)에플로트(24)으로 선택하기진짜입력, 동안플로트(25)에플로트(53)선택배정밀도. 의 값p허용된 범위 밖에서 그림을 그립니다. 오류.플로트정밀도가 지정되지 않음 를 의미하는 것으로 간주됩니다.배정밀도.
참고:이전PostgreSQL7.4, 정밀도부동(p)너무 많은 것을 의미하는 것으로 받아들여졌습니다 십진수. 이는 SQL과 일치하도록 수정되었습니다. 정밀도가 측정되는 방식을 지정하는 표준 이진수. 가정은진짜그리고배정밀도가수에 각각 정확히 24비트와 53비트가 있습니다. IEEE 표준 부동 소수점 구현에 적합합니다. IEEE가 아닌 플랫폼에서는 약간 다를 수 있지만 단순성 동일한 범위p모든 플랫폼에서 사용됩니다.
데이터 유형연재그리고큰 직렬은 실제 유형이 아니지만 단지 고유 식별자 열 설정에 대한 표기 편의성 (와 유사AUTO_INCREMENT다른 데이터베이스에서 지원되는 속성). 현재 구현, 지정
테이블 생성테이블 이름 (
열이름연속
);
다음을 지정하는 것과 동일합니다.
시퀀스 생성테이블 이름_열이름_seq;
테이블 만들기테이블 이름 (
열이름정수 NOT NULL DEFAULT nextval('테이블 이름_열이름_seq')
);
시퀀스 변경테이블 이름_열이름_seq 소유자테이블 이름.열이름;
따라서 우리는 정수 열을 생성하고 그 열을 정렬했습니다. 시퀀스 생성기에서 할당할 기본값입니다. 갑NULL이 아님제약조건이 다음에 적용됩니다. null 값이 명시적으로 삽입될 수 없는지 확인하십시오. (대부분의 경우 다음을 첨부하고 싶을 수도 있습니다.고유또는기본 키중복 값이 삽입되는 것을 방지하는 제약 조건 사고가 발생하지만 이는 자동이 아닙니다.) 마지막으로 순서는 다음과 같습니다. 으로 표시됨"소유자"열이므로 열이나 테이블이 삭제되면 삭제됩니다.
참고:이전PostgreSQL 7.3, 연재묵시적고유. 이것은 더 이상 자동이 아닙니다. 직렬 컬럼을 원할 경우 고유 제약 조건이나 기본 키에 있어야 합니다. 이제 다른 데이터 유형과 동일하게 지정됩니다.
순서의 다음 값을 다음에 삽입하려면연재열, 다음을 지정하십시오.연재열에는 기본값이 할당되어야 합니다. 이는 목록에서 해당 열을 제외하여 수행할 수 있습니다. 의 열 수삽입문장 또는 를 사용하여기본값키 단어.
유형 이름연재그리고연재4동등함: 둘 다 생성정수열. 유형 이름큰 직렬그리고연속8일 같은 방식으로 생성한다는 점만 제외하면비긴트열.큰 직렬다음 이상의 사용이 예상되는 경우 사용해야 합니다. 231테이블 수명 동안의 식별자.
a에 대해 생성된 시퀀스연재소유 열이 다음과 같을 때 열은 자동으로 삭제됩니다. 떨어졌다. 열을 삭제하지 않고 시퀀스를 삭제할 수 있습니다. 하지만 이렇게 하면 열 기본값이 강제로 제거됩니다. 표현.