이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 8 장 데이터 젠 토토버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

8 장. 데이터 범퍼카 토토

PostgreSQL풍부한 세트가 있습니다 사용자가 사용할 수있는 기본 데이터 범퍼카 토토. 사용자는 새로운 범퍼카 토토을 추가 할 수 있습니다PostgreSQL사용범퍼카 토토 만들기명령.

표 8-1모든 것을 보여줍니다 내장 범용 데이터 범퍼카 토토. 대안의 대부분 에 나열된 이름"aliases"열 내부적으로 사용되는 이름은PostgreSQL역사적 이유로. ~ 안에 추가, 일부 내부적으로 사용되거나 더 이상 사용되지 않은 범퍼카 토토이 가능하며 그러나 그들은 여기에 나열되어 있지 않습니다.

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

이름 별칭 설명
bigint int8 8 바이트 정수 서명
bigserial Serial8 8 바이트 정수가 자동화
비트 고정 길이 비트 문자열
비트 값 (n) varbit (n) 가변 길이 비트 문자열
부울 bool Logical Boolean (true/false)
Box 비행기의 직사각형 상자
BYTEA 이진 데이터
캐릭터 변동 (n) varchar (n) 가변 길이 문자열
문자 (n) char (n) 고정 길이 문자열
CIDR IPv4 또는 IPv6 네트워크 주소
Circle 비행기의 원
날짜 달력 날짜 (연도, 월, 일)
이중 정밀도 float8 이중 정밀 부동 소수점 번호
inet IPv4 또는 IPv6 호스트 주소
Integer int, int4 4 바이트 정수에 서명
interval (P) 시간 범위
line 비행기의 무한 선 (완전히 아닙니다 구현)
LSEG 평면의 선 세그먼트
MacAddr Mac 주소
Money 통화 금액
숫자 [(P, S)] 십진 [(P, S)] 정밀도를 선택할 수있는 정확한 숫자
PATH 비행기에서 열고 닫힌 기하학적 경로
포인트 비행기의 기하학적 지점
Polygon 비행기에서 닫힌 기하학적 경로
Real float4 단일 정밀 부동 소수점 번호
smallint int2 서명 2 바이트 정수
Serial Serial4 자동화 된 4 바이트 정수
텍스트 가변 길이 문자열
시간 [(P)] [시간대가없는 ] 시간의 시간
시간 [(P)] with Time Zone Timetz 시간대를 포함한 시간
타임 스탬프 [(P)] [시간대가없는 ] 타임 스탬프 날짜와 시간
타임 스탬프 [(P)] with Time Zone Timestamptz 시간대를 포함한 날짜와 시간

호환성 :다음 범퍼카 토토 (또는 철자 그)는에 의해 지정됩니다.SQL: 비트, 비트 다양한, 부울, char, 캐릭터 다양한, 캐릭터, Varchar, 날짜, 더블 정도, Integer, 간격, 숫자, 10 진수, Real, smallint, Time(시간대가 있거나없는),타임 스탬프(시간대가 있거나없는).

각 데이터 범퍼카 토토에는 외부 표현이 있습니다 입력 및 출력 기능. 많은 내장 범퍼카 토토이 있습니다 명백한 외부 형식. 그러나 몇 가지 범퍼카 토토도 있습니다 독특한PostgreSQL: 개방 및 폐쇄 경로, 또는 형식에 대한 몇 가지 가능성이 있습니다. 날짜 및 시간 범퍼카 토토과 같은. 입력 및 출력 중 일부 기능은 뒤집을 수 없습니다. 즉, 출력 결과입니다 원본과 비교할 때 함수는 정확도를 잃을 수 있습니다 입력.

일부 연산자 및 기능 (예 : 추가 및 곱셈)에서 런타임 오류 확인을 수행하지 않습니다 실행 속도 향상의 관심사. 일부 시스템에서 예를 들어, 일부 데이터 범퍼카 토토의 숫자 연산자는 조용히 언더 플로 또는 오버플로를 일으킨다.

8.1. 숫자 범퍼카 토토

숫자 범퍼카 토토은 2, 4 및 8 바이트로 구성됩니다 정수, 4 바이트 및 8 바이트 부동 소수점 번호 및 고정----------절약 소수점.표 8-2사용 가능한 범퍼카 토토.

표 8-2. 숫자 범퍼카 토토

이름 스토리지 크기 설명 범위
smallint 2 바이트 작은 범위 정수 -32768 ~ +32767
정수 4 바이트 정수에 대한 일반적인 선택 -2147483648 ~ +2147483647
bigint 8 바이트 대규모 정수 -9223372036854775808 ~ 922337203685475807
Decimal 가변 사용자 지정 정밀도, 정확한 제한 없음
숫자 변수 사용자 지정 정밀도, 정확한 제한 없음
Real 4 바이트 가변-프리 보도, 부정 행위 6 십진 자릿수 정밀
이중 정밀도 8 바이트 가변-프레 보도, 미지 15 소수 자릿수 정밀
Serial 4 바이트 AutoinCrementing Integer 1 ~ 2147483647
bigserial 8 바이트 대형 자동화 정수 1 ~ 922372036854775807

숫자 범퍼카 토토의 상수 구문이 설명되어 있습니다. 안에섹션 4.1.2. 숫자 범퍼카 토토에는 해당 전체 세트가 있습니다 산술 연산자 및 기능. 참조9 장자세한 내용은. 그만큼 다음 섹션에서는 범퍼카 토토을 자세히 설명합니다.

8.1.1. 정수 범퍼카 토토

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

범퍼카 토토Integer평소입니다 범위, 스토리지간에 최상의 균형을 제공하는 선택 크기와 성능. 그만큼smallint범퍼카 토토은 일반적으로 디스크 공간이 프리미엄 인 경우에만 사용됩니다. 그만큼bigint범퍼카 토토은 다음과 같은 경우에만 사용해야합니다 그만큼Integer범위는 충분하지 않습니다. 후자는 확실히 더 빠르기 때문에.

thebigint범퍼카 토토이 작동하지 않을 수 있습니다 컴파일러에 의존하기 때문에 모든 플랫폼에서 올바르게 8 바이트 정수에 대한 지원. 그런 기계에 지원하다,bigint정수(그러나 여전히 8 바이트를 차지합니다 스토리지). 그러나 우리는 합리적인 것을 알지 못합니다 이것이 사실 인 플랫폼.

SQL정수 범퍼카 토토Integer(또는int) 및smallint. 범퍼카 토토bigint및 범퍼카 토토 이름int2, int4int8공유되는 확장자입니다 다양한 기타SQL데이터베이스 시스템.

참고 :범퍼카 토토 열이있는 경우smallint또는bigint색인, 시스템을 얻는 데 문제가 발생할 수 있습니다 그 지수를 사용합니다. 예를 들어, 양식의 조항

... 여기서 smallint_column = 42

시스템이 범퍼카 토토을 할당하기 때문에 인덱스를 사용하지 않습니다Integer상수 42 및PostgreSQL현재 두 가지 다른 데이터 범퍼카 토토이있는 경우 인덱스를 사용할 수 없습니다. 관련된. 해결 방법은 상수를 단일 쿼트하는 것입니다. 따라서:

... 여기서 smallint_column = '42'

시스템이 범퍼카 토토 해상도를 지연시킵니다 올바른 범퍼카 토토을 상수에 할당합니다.

8.1.2. 임의의 정밀도 숫자

범퍼카 토토숫자숫자를 저장할 수 있습니다 최대 1000 자리의 정밀도 및 계산을 수행합니다. 정확히. 특히 금전적 저장에 권장됩니다 정확성이 필요한 양 및 기타 수량. 그러나숫자타입은 매우 느립니다 다음에 설명 된 부동 소수점 범퍼카 토토과 비교합니다 부분.

다음에서 우리는이 용어를 사용합니다.스케일of숫자is 분수 부분의 소수점 숫자 수는 소수점의 오른쪽. 그만큼정밀숫자전체 숫자의 총 숫자 수는 총 수입니다. 즉, 소수점의 양쪽에 숫자의 수 가리키다. 그래서 23.5141 숫자는 정밀도가 6이고 스케일입니다. 4. 정수는 0의 스케일을 갖는 것으로 간주 될 수 있습니다.

숫자 범퍼카 토토의 정밀도와 스케일은 모두 구성하십시오. 범퍼카 토토의 열을 선언하려면숫자구문 사용

숫자 (정밀, 스케일)

정밀도는 양수 여야합니다. 스케일 0 또는 긍정적인. 또는

숫자 (정밀)

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

숫자

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

값의 정밀도 또는 스케일이 열의 정밀 또는 스케일을 선언하면 시스템은 가치를 반올림하려고합니다. 값을 반올림 할 수없는 경우 선언 된 한계를 충족시키기 위해 오류가 제기됩니다.

범퍼카 토토Decimaland숫자동등합니다. 두 범퍼카 토토 모두의 일부입니다 그만큼SQL표준.

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

데이터 범퍼카 토토Realand이중 정밀도가변적이며 가변적입니다 숫자 범퍼카 토토. 실제로 이러한 범퍼카 토토은 일반적으로입니다 구현IEEE바이너리 플로팅 포인트 산술 용 표준 754 (단일 및 이중 정밀도) 기본 프로세서, 운영 체제 및 컴파일러 지원 그것.

부당 함은 일부 값을 정확하게 변환 할 수 없음을 의미합니다 내부 형식으로, 근사치로 저장됩니다. 값을 저장하고 인쇄하는 것은 약간의 불일치. 이러한 오류 및 전파 방법 관리 계산을 통해 전체 지점의 주제입니다. 수학 및 컴퓨터 과학은 논의되지 않을 것입니다 또한 다음 사항을 제외하고는 다음과 같습니다.

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

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

  • 평등에 대한 두 개의 부동 소수점 값 비교 5 월 또는 예상대로 작동하지 않을 수 있습니다.

대부분의 플랫폼에서Real범퍼카 토토이 있습니다 AT의 정밀도로 최소 1E-37 ~ 1E+37의 범위 최소 6 자리 숫자. 그만큼더블 정도범퍼카 토토은 일반적으로 약 1e-307까지 범위를 갖습니다 정밀도가 15 자리 이상인 1E+308. 그 가치 너무 크거나 너무 작 으면 오류가 발생합니다. 반올림 5 월 입력 번호의 정밀도가 너무 높으면 발생합니다. 표시 할 수없는 0에 너무 가까운 숫자 0과는 별개로 언더 플로 오류가 발생합니다.

PostgreSQL또한 지원됩니다 SQL 표준 표기법floatfloat (P)부정확 한 숫자를 지정합니다 범퍼카 토토. 여기,P이진 숫자의 최소 허용 정밀도.PostgreSQLAccucctsfloat (1)tofloat (24)AS 선택Real타입float (25)tofloat (53)select더블 정도. 의 값P허용 범위 외부는 오류를 그립니다.float정밀도가 지정되지 않은 상태로 사용됩니다 평균이중 정밀도.

참고 :이전PostgreSQL7.4, 정밀도float (P)너무 많은 것을 의미했습니다 십진수. 이것은 SQL과 일치하도록 수정되었습니다 정밀도가 측정되도록 지정하는 표준 이진 숫자로.Real더블 정도정확히 24 및 53 비트가 있습니다 Mantissa는 각각 IEEE 표준에 맞습니다 부동 소수점 구현. 비 지구 플랫폼에서 조금 벗어날 수 있지만 단순화를 위해 동일한 범위 의P모두에 사용됩니다 플랫폼.

8.1.4. 일련 범퍼카 토토

데이터 범퍼카 토토Serialbigserial는 진정한 범퍼카 토토이 아니라 단지 a 고유 식별자를 설정하기위한 표기법 편의성 열 (유사auto_increment일부가 지원하는 속성 다른 데이터베이스). 현재 구현에서 지정

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

지정과 동일합니다.

시퀀스 만들기TableName_Colname_Seq;
테이블 작성TableName(ColnameInteger Default NextVal ( 'TableName_Colname_seq ') null이 아닙니다
);

따라서 정수 열을 만들어 시퀀스 생성기에서 할당 할 기본값. 에이NOT NULL제약 조건이 적용됩니다 널 값을 명시 적으로 삽입 할 수 없는지 확인하십시오. 어느 하나. 대부분의 경우 A 첨부를 원할 것입니다.고유 한또는기본 키복제를 방지하기위한 제약 조건 우연히 삽입 된 값이지만 이것은 아닙니다. 오토매틱.

참고 :이전PostgreSQL 7.3, Serial암시고유 한. 이것은 더 이상 자동이 아닙니다. 만약에 직렬 열이 고유 한 제약이되기를 바랍니다. 기본 키, 이제와 동일하게 지정해야합니다. 기타 데이터 범퍼카 토토.

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

범퍼카 토토 이름SerialSerial4동등합니다 : 둘 다 Create정수열. 범퍼카 토토 이름bigserialandSerial8작업 그들이 a를 만드는 것을 제외하고 똑같은 방식으로bigint열.bigserial231수명의 식별자 테이블.

a를 위해 생성 된 시퀀스Serial소유 열이있을 때 열이 자동으로 삭제됩니다 삭제하고 다른 방법으로 떨어질 수 없습니다. (이것은 사실이 아니었다 안에PostgreSQL릴리스 7.3 이전. 이 자동 드롭 링키지는 그렇지 않습니다 덤프를 다시로드하여 생성 된 시퀀스에 대해 발생합니다. 7.3 이전 데이터베이스; 덤프 파일에는 포함되지 않습니다 의존성 링크를 설정하는 데 필요한 정보.) 또한, 시퀀스와 열 사이의 이러한 의존성은 다음과 같습니다 에만 제작 된Serial열 자체; 다른 열이 시퀀스를 참조하는 경우 (아마도 수동으로 전화NextVal함수) 시퀀스가 제거되면 파손됩니다. a 사용Serial열의 시퀀스 그러한 패션은 나쁜 형태로 간주됩니다. 먹이를 원한다면 동일한 시퀀스 생성기의 여러 열이 있습니다 독립 객체로서의 시퀀스.