데이터 타입

데이터 타입 (Data Types)

PostgreSQL은 정말 풍부한 데이터 타입을 기본으로 제공해요. 이 페이지는 그 타입들을 개괄적으로 보여드리면서, 어떤 타입이 있고 각각이 뭘 표현하는지 한눈에 잡을 수 있게 해줄게요. 각 타입의 상세 규칙(입력·출력 형식, 연산 등)은 하위 문서에서 따로 다루니까, 여기서는 큰 그림과 전체 목록을 익히는 데 집중하면 돼요. 필요하다면 CREATE TYPE 명령으로 완전히 새로운 타입을 추가할 수도 있어요.

출처: PostgreSQL 공식 문서 — Data Types

전체 데이터 타입 목록 (Table of Data Types)

Table 8.1은 모든 내장 범용(general-purpose) 데이터 타입을 보여줘요. "Aliases(별칭)" 컬럼에 나오는 대안 이름 대부분은 PostgreSQL이 역사적인 이유로 내부에서 쓰는 이름이에요. 그 밖에 내부용이거나 더 이상 권장되지 않는(deprecated) 타입도 있지만 여기 목록에는 없어요.

Table 8.1. Data Types

이름 (Name) 별칭 (Aliases) 설명 (Description)
bigint int8 부호 있는 8바이트 정수 (signed eight-byte integer)
bigserial serial8 자동 증가 8바이트 정수 (autoincrementing eight-byte integer)
bit [ (n) ] 고정 길이 비트 문자열 (fixed-length bit string)
bit varying [ (n) ] varbit [ (n) ] 가변 길이 비트 문자열 (variable-length bit string)
boolean bool 논리 불리언 (true/false)
box 평면 위의 사각형 상자 (rectangular box on a plane)
bytea 이진 데이터 (“바이트 배열”)
character [ (n) ] char [ (n) ] 고정 길이 문자 문자열 (fixed-length character string)
character varying [ (n) ] varchar [ (n) ] 가변 길이 문자 문자열 (variable-length character string)
cidr IPv4 또는 IPv6 네트워크 주소 (network address)
circle 평면 위의 원 (circle on a plane)
date 달력 날짜 (년, 월, 일)
double precision float, float8 배정밀도 부동소수점 수 (8바이트)
inet IPv4 또는 IPv6 호스트 주소 (host address)
integer int, int4 부호 있는 4바이트 정수
interval [ fields ] [ (p) ] 시간 간격 (time span)
json 텍스트형 JSON 데이터
jsonb 분해된(decomposed) 이진 JSON 데이터
line 평면 위의 무한 직선 (infinite line on a plane)
lseg 평면 위의 선분 (line segment on a plane)
macaddr MAC (Media Access Control) 주소
macaddr8 MAC 주소 (EUI-64 형식)
money 통화 금액 (currency amount)
numeric [ (p, s) ] decimal [ (p, s) ] 정밀도를 고를 수 있는 정확한 수 (exact numeric)
path 평면 위의 기하 경로 (geometric path on a plane)
pg_lsn PostgreSQL Log Sequence Number
pg_snapshot 사용자 레벨 트랜잭션 ID 스냅샷
point 평면 위의 기하 점 (geometric point on a plane)
polygon 평면 위의 닫힌 기하 경로 (closed geometric path)
real float4 단정밀도 부동소수점 수 (4바이트)
smallint int2 부호 있는 2바이트 정수
smallserial serial2 자동 증가 2바이트 정수
serial serial4 자동 증가 4바이트 정수
text 가변 길이 문자 문자열
time [ (p) ] [ without time zone ] 시간대 없는 시각 (time of day)
time [ (p) ] with time zone timetz 시간대 포함 시각
timestamp [ (p) ] [ without time zone ] 시간대 없는 날짜와 시각
timestamp [ (p) ] with time zone timestamptz 시간대 포함 날짜와 시각
tsquery 텍스트 검색 쿼리 (text search query)
tsvector 텍스트 검색 문서 (text search document)
txid_snapshot 사용자 레벨 트랜잭션 ID 스냅샷 (deprecated, pg_snapshot 참고)
uuid 범용 고유 식별자 (universally unique identifier)
xml XML 데이터

타입 분류와 하위 문서 (Type Categories and Subsections)

데이터 타입은 성격에 따라 여러 그룹으로 나뉘는데, 각 그룹마다 별도 섹션이 있어요.

  • 8.1. 숫자 타입 (Numeric Types) — 정수형(Integer Types), 임의 정밀도 숫자(Arbitrary Precision Numbers), 부동소수점 타입(Floating-Point Types), Serial 타입. → datatype-numeric
  • 8.2. 통화 타입 (Monetary Types)money. → datatype-money
  • 8.3. 문자 타입 (Character Types)character, character varying, text. → datatype-character
  • 8.4. 이진 데이터 타입 (Binary Data Types)bytea (hex/escape 형식). → datatype-binary
  • 8.5. 날짜/시간 타입 (Date/Time Types)date, time, timestamp, interval과 시간대 처리. → datatype-datetime
  • 8.6. 불리언 타입 (Boolean Type)boolean. → datatype-boolean
  • 8.7. 열거 타입 (Enumerated Types) — 사용자 정의 enum. → datatype-enum
  • 8.8. 기하 타입 (Geometric Types)point, line, lseg, box, path, polygon, circle. → datatype-geometric
  • 8.9. 네트워크 주소 타입 (Network Address Types)inet, cidr, macaddr, macaddr8. → datatype-net-types
  • 8.10. 비트 문자열 타입 (Bit String Types)bit, bit varying. → datatype-bit
  • 8.11. 텍스트 검색 타입 (Text Search Types)tsvector, tsquery. → datatype-textsearch
  • 8.12. UUID 타입 (UUID Type)uuid. → datatype-uuid
  • 8.13. XML 타입 (XML Type)xml. → datatype-xml
  • 8.14. JSON 타입 (JSON Types)json, jsonb, jsonpath. → datatype-json
  • 8.15. 배열 (Arrays) — 모든 타입의 배열. → arrays
  • 8.16. 복합 타입 (Composite Types) — 행 구조를 담는 사용자 정의 타입. → rowtypes
  • 8.17. 범위 타입 (Range Types) — 값의 범위와 multirange. → rangetypes
  • 8.18. 도메인 타입 (Domain Types) — 기존 타입에 제약을 얹은 사용자 정의 타입. → domains
  • 8.19. 객체 식별자 타입 (Object Identifier Types) — PostgreSQL 내부에서 쓰는 OID 계열. → datatype-oid
  • 8.20. pg_lsn 타입 (pg_lsn Type) — 로그 시퀀스 번호. → datatype-pg-lsn
  • 8.21. 의사 타입 (Pseudo-Types) — 함수 정의 등에서만 쓰는 특수 타입. → datatype-pseudo

호환성 (Compatibility)

SQL 표준이 지정한 타입(또는 그 표기법)은 다음과 같아요. bigint, bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time(시간대 유무 모두), timestamp(시간대 유무 모두), xml.

입력·출력 함수 (Input and Output Functions)

각 데이터 타입은 자신의 입력(input) 함수와 출력(output) 함수에 의해 결정되는 외부 표현(external representation)을 가져요. 내장 타입 중 상당수는 외부 형식이 명확하지만, PostgreSQL 고유한 타입(예: 기하 경로)이나 여러 가능한 형식을 가진 타입(예: 날짜·시간 타입)도 있어요. 또 일부 입력·출력 함수는 가역적이지 않아서(invertible), 출력 함수의 결과가 원래 입력에 비해 정확도를 잃을 수도 있다는 점을 기억해 두면 좋아요.

더 알아보기 (Learn more)