이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 8 장 데이터 젠 토토버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

8장. 데이터 범퍼카 토토

포스트그레SQL풍부한 세트를 가지고 있습니다 사용자가 사용할 수 있는 기본 데이터 범퍼카 토토입니다. 사용자는 다음에 새로운 범퍼카 토토을 추가할 수 있습니다.PostgreSQL다음을 사용하여범퍼카 토토 생성명령.

표 8-1모두 표시 내장된 범용 데이터 범퍼카 토토. 대부분의 대안 에 나열된 이름"별칭"열 내부적으로 사용되는 이름입니다.포스트그레SQL역사적인 이유로. 에서 또한 내부적으로 사용되거나 더 이상 사용되지 않는 일부 범퍼카 토토을 사용할 수 있습니다. 하지만 여기에는 나열되어 있지 않습니다.

표 8-1. 데이터 범퍼카 토토

이름 별칭 설명
비긴트 int8 부호 있는 8바이트 정수
큰 직렬 연재8 8바이트 정수 자동 증가
비트 고정 길이 비트 문자열
비트 다양함(n) varbit(n) 가변 길이 비트 문자열
부울 부울 논리적 부울(참/거짓)
상자 평면의 직사각형 상자
바이테아 바이너리 데이터
문자 다양(n) varchar(n) 가변 길이 문자열
문자(n) 문자(n) 고정 길이 문자열
cidr IPv4 또는 IPv6 네트워크 주소
평면의 원
날짜 달력 날짜(년, 월, 일)
배정밀도 float8 배정밀도 부동 소수점 수
inet IPv4 또는 IPv6 호스트 주소
정수 int, int4 부호 있는 4바이트 정수
간격(p) 시간 범위
라인 평면의 무한한 선(완전히는 아님) 구현)
lseg 평면의 선분
macaddr MAC 주소
통화 금액
숫자 [ (p, s) ] 십진수 [ (p, s) ] 선택 가능한 정밀도를 갖춘 정확한 숫자
경로 평면에서 열리고 닫힌 기하학적 경로
평면의 기하학적 점
다각형 평면의 닫힌 기하학적 경로
진짜 float4 단정밀도 부동 소수점 수
작은인트 int2 서명된 2바이트 정수
연재 연재4 4바이트 정수 자동 증가
텍스트 가변 길이 문자열
시간 [ (p) ] [ 시간대 없음 ] 시간
시간 [ (p) ] 시간대 포함 timetz 시간대를 포함한 시간
타임스탬프 [ (p) ] [ 시간대 없음 ] 타임스탬프 날짜 및 시간
타임스탬프 [ (p) ] 시간대 포함 timestamptz 날짜 및 시간(시간대 포함)

호환성:다음 범퍼카 토토(또는 철자법) 해당)은 다음과 같이 지정됩니다.SQL: 비트, 비트 다양함, 부울, 문자, 문자 다양, 문자, varchar, 날짜, 더블 정밀도, 정수, 간격, 숫자, 십진수, 진짜, smallint, 시간(시간대 포함 또는 제외),타임스탬프(시간대 포함 또는 제외).

각 데이터 범퍼카 토토에는 다음에 의해 결정되는 외부 표현이 있습니다. 입력 및 출력 기능. 내장된 범퍼카 토토 중 상당수는 명백한 외부 형식. 그러나 여러 범퍼카 토토이 고유한PostgreSQL, 예: 열린 경로와 닫힌 경로 또는 형식에 대한 여러 가지 가능성이 있습니다. 날짜 및 시간 범퍼카 토토과 같은. 입력과 출력의 일부 함수는 되돌릴 수 없습니다. 즉, 출력 결과 원본과 비교하면 기능의 정확성이 떨어질 수 있습니다. 입력합니다.

일부 연산자 및 함수(예: 덧셈 및 곱셈)에서는 런타임 오류 검사를 수행하지 않습니다. 실행 속도 향상에 관심이 있습니다. 일부 시스템에서는 예를 들어 일부 데이터 범퍼카 토토의 숫자 연산자는 자동으로 언더플로 또는 오버플로가 발생합니다.

8.1. 숫자 범퍼카 토토

숫자 범퍼카 토토은 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장26098_26179

8.1.1. 정수 범퍼카 토토

범퍼카 토토smallint, 정수비긴트저장 정수, 즉 분수가 없는 숫자 다양한 범위의 구성 요소. 값을 저장하려는 시도 허용 범위를 벗어나면 오류가 발생합니다.

범퍼카 토토정수평소에요 범위와 저장 공간 간의 최상의 균형을 제공하므로 선택 가능 크기, 성능.smallint범퍼카 토토은 일반적으로 디스크 공간이 부족한 경우에만 사용됩니다.비긴트범퍼카 토토은 다음 경우에만 사용해야 합니다.정수범위가 충분하지 않습니다. 후자가 확실히 더 빠르기 때문입니다.

비긴트범퍼카 토토이 작동하지 않을 수 있습니다. 컴파일러에 의존하기 때문에 모든 플랫폼에서 올바르게 작동합니다. 8바이트 정수를 지원합니다. 그런 것이 없는 기계에서는 지원하다,비긴트다음과 동일하게 작동합니다정수(그러나 여전히 8바이트를 차지합니다) 저장). 그러나 우리는 합리적인 실제로 이러한 경우가 있는 플랫폼입니다.

SQL만 지정합니다 정수 범퍼카 토토정수(또는int) 및smallint. 범퍼카 토토비긴트및 범퍼카 토토 이름int2, int4int8확장 프로그램은 다음과 공유됩니다. 기타 다양한SQL데이터베이스 시스템.

참고:다음 범퍼카 토토의 열이 있는 경우작은int또는bigint와 함께 인덱스를 사용하는 경우 시스템을 가져오는 데 문제가 발생할 수 있습니다. 해당 인덱스를 사용합니다. 예를 들어, 다음 형식의 절은

... 어디서 smallint_column = 42

시스템이 범퍼카 토토을 할당하기 때문에 색인을 사용하지 않습니다.정수상수 42로, 그리고PostgreSQL현재 서로 다른 두 데이터 범퍼카 토토이 있는 경우 인덱스를 사용할 수 없습니다. 참여. 해결 방법은 상수를 작은따옴표로 묶는 것입니다. 따라서:

... 어디에서 smallint_column = '42'

이로 인해 시스템이 범퍼카 토토 확인을 지연시킵니다. 그리고 상수에 올바른 범퍼카 토토을 할당합니다.

8.1.2. 임의의 정밀도 숫자

범퍼카 토토숫자번호를 저장할 수 있음 최대 1000자리의 정밀도로 계산을 수행합니다. 정확히. 특히 화폐 보관에 추천합니다 정확성이 요구되는 금액 및 기타 수량. 그러나,숫자범퍼카 토토이 매우 느림 다음에 설명된 부동 소수점 범퍼카 토토과 비교 섹션.

다음에서 우리는 다음 용어를 사용합니다: The규모숫자이다 분수 부분의 소수 자릿수를 소수점 오른쪽.정밀도숫자은 정수 중 유효 숫자의 총 개수입니다. 즉, 소수점 양쪽 자리수 포인트. 따라서 숫자 23.5141의 정밀도는 6이고 소수 자릿수는 6입니다. of 4. 정수는 0의 척도를 갖는 것으로 간주될 수 있습니다.

숫자 범퍼카 토토의 정밀도와 소수 자릿수가 모두 가능합니다. 구성됩니다. 범퍼카 토토의 열을 선언하려면숫자구문을 사용하세요

숫자(정밀도, 규모)

정밀도는 양수여야 하며, 척도는 0이거나 긍정적이다. 또는,

숫자(정밀도)

척도 0을 선택합니다. 지정

숫자

정밀도나 배율 없이 다음과 같은 열을 생성합니다. 모든 정밀도 및 배율의 숫자 값을 저장할 수 있습니다. 정밀도의 구현 한계에 도달했습니다. 이 칼럼 종류는 입력 값을 특정 규모로 강제하지 않습니다. 반면숫자선언된 열 scale은 입력 값을 해당 규모로 강제 변환합니다. (그SQL표준에는 기본 스케일은 0입니다. 즉, 정수 정밀도로 강제 변환됩니다. 우리 이건 좀 쓸모없다고 생각해. 걱정되는 경우 이식성, 항상 정밀도와 규모를 지정 명시적으로.)

값의 정밀도나 배율이 값보다 큰 경우 선언된 열의 정밀도 또는 배율에 따라 시스템은 값을 반올림해 보십시오. 값을 반올림할 수 없는 경우 선언된 제한을 충족하면 오류가 발생합니다.

범퍼카 토토십진수그리고숫자동등합니다. 두 범퍼카 토토 모두의 일부입니다.SQL표준.

8.1.3. 부동 소수점 범퍼카 토토

데이터 범퍼카 토토실제그리고배정밀도부정확하고 가변 정밀도입니다. 숫자 범퍼카 토토. 실제로 이러한 범퍼카 토토은 일반적으로 구현IEEE이진 부동 소수점 연산을 위한 표준 754(단일 및 각각 배정밀도) 기본 프로세서, 운영 체제 및 컴파일러 지원 그것.

정확하지 않음은 일부 값을 정확하게 변환할 수 없음을 의미합니다. 내부 형식으로 변환되어 근사값으로 저장되므로 값을 저장하고 다시 인쇄하면 약간 보일 수 있습니다. 불일치. 오류 관리 및 전파 방법 계산을 통해 전체 지점의 주제입니다. 수학과 컴퓨터 과학은 논의되지 않습니다. 다음 사항을 제외하고는 여기에서 더 자세히 설명합니다.

  • 정확한 저장 및 계산이 필요한 경우(예: 금액의 경우), 다음을 사용하세요.숫자대신 입력하세요.

  • 이것으로 복잡한 계산을 하고 싶다면 특히 당신이 의존하는 경우 중요한 것의 범퍼카 토토 경계 경우(무한대, 언더플로)의 특정 동작 구현을 주의 깊게 평가해야 합니다.

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

대부분의 플랫폼에서는진짜범퍼카 토토이 있음 최소 1E-37에서 1E+37까지의 범위(정밀도 at) 최소 6자리의 십진수.더블 정밀도범퍼카 토토의 범위는 일반적으로 약 1E-307에서 1E+308의 정밀도는 최소 15자리입니다. 가치 너무 크거나 너무 작으면 오류가 발생합니다. 반올림할 수 있음 입력 숫자의 정밀도가 너무 높으면 발생합니다. 0에 너무 가까워서 표현할 수 없는 숫자 0과 다르면 언더플로 오류가 발생합니다.

포스트그레SQL또한 지원합니다 SQL 표준 표기법플로트그리고부동(p)부정확한 숫자를 지정하는 경우 범퍼카 토토. 여기,p다음을 지정합니다. 이진수로 허용되는 최소 정밀도입니다.PostgreSQL수락부동(1)플로트(24)으로 선택하기진짜입력, 동안플로트(25)플로트(53)선택더블 정밀도. 의 값p허용된 범위를 벗어나면 오류가 발생합니다.플로트정밀도가 지정되지 않은 경우 뜻배정밀도.

참고:이전포스트그레SQL7.4, 정밀도부동(p)너무 많은 것을 의미하는 것으로 받아들여졌습니다 십진수. 이는 SQL과 일치하도록 수정되었습니다. 정밀도가 측정되도록 지정하는 표준 이진수로. 가정은진짜그리고더블 정밀도정확히 24비트와 53비트가 있습니다. 가수는 각각 IEEE 표준에 적합합니다. 부동 소수점 구현. IEEE가 아닌 플랫폼에서는 약간 다를 수 있지만 단순화를 위해 동일한 범위 의p모두에 사용됩니다 플랫폼.

8.1.4. 직렬 범퍼카 토토

데이터 범퍼카 토토연재그리고큰 직렬은 실제 범퍼카 토토이 아니지만 단지 고유 식별자 설정을 위한 표기 편의성 열(와 유사AUTO_INCREMENT일부에서 지원하는 속성 다른 데이터베이스). 현재 구현에서는 지정

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

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

시퀀스 생성테이블 이름_열이름_seq;
테이블 만들기테이블 이름 (
    열이름정수 DEFAULT nextval('테이블 이름_열이름_seq') NULL이 아님
);

따라서 우리는 정수 열을 생성하고 다음과 같이 배열했습니다. 기본값은 시퀀스 생성기에서 할당됩니다. 갑NULL이 아님제약조건이 다음에 적용됩니다. Null 값을 명시적으로 삽입할 수 없는지 확인하세요. 어느 쪽이든. 대부분의 경우 다음을 첨부하고 싶을 수도 있습니다.고유또는기본 키중복을 방지하기 위한 제약 실수로 값이 삽입되는 것을 방지할 수 있지만 이는 그렇지 않습니다. 자동.

참고:이전PostgreSQL 7.3, 연재묵시적고유. 이것은 더 이상 자동이 아닙니다. 만약에 직렬 열이 고유 제약 조건에 있기를 원하거나 기본 키는 이제 지정해야 합니다. 다른 데이터 범퍼카 토토.

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

범퍼카 토토 이름연재그리고연재4동등함: 둘 다 생성정수열. 범퍼카 토토 이름큰 직렬그리고연속8일 같은 방식으로 생성한다는 점만 제외하면비긴트열.큰 직렬다음 이상의 사용이 예상되는 경우 사용해야 합니다. 231전체 식별자 테이블.

다음을 위해 생성된 시퀀스연재소유 열이 다음과 같을 때 열은 자동으로 삭제됩니다. 떨어뜨려야 하며 그렇지 않으면 떨어뜨릴 수 없습니다. (이건 사실이 아니었어요 에서PostgreSQL출시 7.3 이전. 이 자동 삭제 연결은 덤프를 다시 로드하여 생성된 시퀀스에 대해 발생합니다. 7.3 이전 데이터베이스; 덤프 파일에 다음이 포함되어 있지 않습니다. 종속성 링크를 설정하는 데 필요한 정보입니다.) 게다가 시퀀스와 열 간의 이러한 종속성은 다음과 같습니다. 오직만을 위해 만들어졌습니다연재열 자체; 다른 열이 해당 시퀀스를 참조하는 경우(아마도 수동으로 호출다음값함수), 시퀀스가 제거되면 손상됩니다. 를 사용하여연재열의 순서 그러한 패션은 나쁜 형태로 간주됩니다. 먹이를 주고 싶다면 동일한 시퀀스 생성기에서 여러 열을 생성합니다. 독립된 개체로 시퀀스됩니다.