작성일자 기준 : 15.0 버전
참고 문서 : https://www.postgresql.org/files/documentation/pdf/15/postgresql-15-A4.pdf
PostgreSQL 데이터 타입 (자료형)
- 정수형 데이터
종류 | 별칭/동의어 | 비고 | |
정수(2byte) | smallint | int2 | -32768 ~ 32767 |
정수(4byte) | integer | int / int4 | -2147483648 ~ 2147483647 |
정수(8byte) | bigint | int8 | -9223372036854775808 ~ 9223372036854775807 |
가변 | numeric | decimal | 숫자값과 소수점 아래를 지정해 정밀한 숫자 표현 |
정수(2byte) | smallserial | serial2 | 자동 증가 타입 (1 ~ 32767 ) |
정수(4byte) | serial | serial4 | 자동 증가 타입 (1 ~ 2147483647 ) |
정수(8byte) | bigserial | serial8 | 자동 증가 타입 (1 ~ 9223372036854775807) |
정수(1byte) | boolean | true = yes = on = 1 false = no = off = 0 |
- 실수형 데이터
종류 | 별칭/동의어 | 비고 | |
실수(4byte) | real | float4 | 최소 6자리 정밀도 |
실수(8byte) | double precision | float8 | 최소 15자리 정밀도 |
- 날짜 및 시간형 데이터
종류 | 설명 | 비고 | 사용 가능 함수 |
timestamp | 8byte | 날짜, 시간 둘 다 | now(), today() |
date | 4byte | 날짜만 | now(), today() |
time | 8byte | 시간만 | now(), allballs |
- 문자열 데이터
종류 | 설명 | 비고 |
char | 고정 길이 문자열 | 1바이트 |
char(n) | 고정 길이 문자열 | n바이트, 빈 공간은 패딩으로 채워짐 |
varchar(n) | 가변 길이 문자열 | 최대 n개 글자수 지정 |
text | 가변 길이 문자열 | 제한 없음 |
enum |
- Network Address 데이터
종류 | 설명 | |
cidr | 7 혹은 19 byte | IPv4 혹은 IPv6 네트워크 주소 |
inet | 7 혹은 19 byte | IPv4 혹은 IPv6 네트워크 주소 (cidr보다 더 유연함) |
macaddr | 6byte | MAC 주소 |
macaddr8 | 8byte | MAC 주소 |
- 배열 데이터
: 타입 뒤에 [] 붙이면 배열 데이터를 생성할 수 있다. 기본 데이터 타입, ENUM 타입 등 다양한 타입에 적용될 수 있다.
CREATE TABLE table1(
col1 text,
col2 integer[], # 배열 최대 사이즈 안정함
col3 integer[3][3], # 배열 최대 사이즈를 3으로 정함
col4 integer ARRAY[4] # 뒤에 ARRAY[사이즈]를 붙이는 방법으로도 사용함
);
- 복합 데이터
: 새로운 데이터 타입을 생성한 후, 생성한 타입을 데이터 타입으로 설정할 수 있다.
# inventory_item 데이터 타입 생성
CREATE TYPE inventory_item AS (
name text,
supplier_id integer,
price numeric
);
# 데이터 타입으로 지정
CREATE TABLE on_hand (
item inventory_item,
count integer
);
# 다음과 같이 insert 가능
INSERT INTO on_hand VALUES (ROW('fuzzy dice', 42, 1.99), 1000);
이외에도 공간 데이터 타입, JSON 타입, 범위 데이터 등이 존재한다.
댓글