[PostgreSQL] PostgreSQL의 숫자 타입

sinryuji·2025년 3월 12일

INTEGERS

정수 값을 나타낼 때 사용하는 타입들.

  • SMALLINT(=INT2)
    • 2Byte
    • 가장 적은 범위의 타입, 16비트의 정수 값
    • -32,768 ~ +32,767
  • INTEGER(=INT, =INT4)
    • 4Byte
    • 가장 일반적으로 사용되는 타입, 32비트의 정수 값
    • -2147483648 ~ +2147483648
  • BIGINT(=INT8)
    • 8Byte
    • INTEGER의 범위로 충분하지 않을 때 사용되는 타입, 64비트의 정수 값
    • -9223372036854775808 ~ +9223372036854775808

SERIAL

정수 시퀀스를 생성하는 특별한 타입. 주로 테이블의 기본 키 값으로 사용되는 경우가 많다.

  • SMALLSERIAL(=SERIAL2)
    • 2Byte
    • 16비트의 자동 생성 열을 나타내는 타입
    • 1~32,767
  • SERIAL(=SERIAL4)
    • 4Byte
    • 32비트의 자동 생성 열을 나타내는 타입
    • 1~2,147,483,647
  • BIGSERIAL(=SERIAL8)
    • 8Byte
    • 64비트의 자동 생성 열을 나타내는 타입
    • 1~9,223,372,036,854,775,807

FLOAT

부동 소수점을 나타내는 데이터 타입.
정확하게 변환할 수 없고 근사값으로 저장 되기 때문에 정확한 연산에 적합하지 않다.

  • FLOAT(n)
    • n ~ 8byte
    • 정밀도가 n인 부동 소수점 숫자 값을 나타내는 타입
  • REAL(=FLOAT4)
    • 4byte
    • 32비트의 부동 소수점 숫자 값을 나타내는 타입
    • 소수점 최대 6자리
  • DOUBLE PRECISION(=FLOAT8)
    • 8byte
    • 64비트의 부동 소수점 숫자 값을 나타내는 타입
    • 소수점 최대 15자리

NUMERIC

소숫점 이하의 scale 자릿수가 있는 precision 자리의 실수를 나타내는 타입.
정밀한 값을 보장하므로 정확한 연산에 적합하다.
하지만 FLOAT 타입들에 비해 성능이 떨어지는 단점이 있다.

  • NUMERIC(p, s)
    • 고정된 소수점 숫자 값을 나타내는 타입, p는 전체 자릿수이고 s는 소수 자릿수

사용 예시

CREATE TABLE location (
  id INTEGER,
  latitude NUMERIC(9, 6),
  longitude NUMERIC(9, 6)
);

위와 같이 위도 경도를 저장하기 위해 NUMERIC(9, 6)으로 지정해주면 113.65412662.168234와 같은 값을 저장할 수 있다.

만약 113.6541269를 넣으면 소수점에서 반올림하여 scale을 맞춰 113.654127이 된다.

profile
응애 개발자입니다.

0개의 댓글