PostgreSQL에서 자주 사용되는 데이터 타입으로는
1. 숫자형(Numeric Types)
2. 화폐형(Monetary Types)
3. 문자형(Character Types)
4. 날짜 및 시간(Date & Time)
5. 불리언형(Boolean Types)
6. 배열형(Array Types)
7. json형(JSON Type)
숫자형도 여러가지 종류가 있다.
INTEGER 타입은 INT로 축약해서 사용할 수 있고 많은 프로그래밍 언어에서 사용되는 int형과 유사하다.
4 bytes(-2147483648 ~ +2147483647)
기본 int에 비해 넓은 범위의 정수에 대응한다. 자바의 long 타입과 유사하다.
8 bytes(-9223372036854775808 ~ 9223372036854775807)
소수점까지 정확하게 입력받아야할 때 사용하기 좋다. NUMERIC(p,q) p에는 전체 자릿수 q에는 소수점 자릿수를 지정한다. ex)NUMERIC(3,2) =0.01~9.99범위의 숫자를 입력받을 수 있다.
보통NUMERIC(n) 이런식으로 사용하며 이런 경우 n자리 정수로 제한한다. 사용자 지정 정밀도, variable, 정확(제한 없음)
INTEGER를 기본 값으로 1씩 추가되어 자동으로 증가하고 주로 PK에 사용된다 .
4 bytes(1 ~ 2147483647)
INTEGER과 BIGINT와 비슷한 관계로 자동으로 증가하지만 최댓값이 더 크다.
8 bytes(1 ~ 9223372036854775807
MONEY타입은 Locale에 따라 다양한 화폐 타입의 입력을 받을 수 있다.
8 bytes(-92233720368547758.08 ~ +92233720368547758.07)
CHAR(n) = 문자길이 + 공백 형식으로 n에 맞춰 저장
n이하의 문자를 그대로 저장
CHAR는 문자가 n자리보다 짧을 경우 공백으로 채워줘야 되기 때문에 VARCHAR에 비해 성능이 나쁘다.
길이에 상관없이 모든 문자열 저장(=n지정하지 않은 VARCHAR)
현재 세계 표준시(UTC), 시간대 정보 반영하지 않음. 8bytes
세계 표준시, 시간대 정보 반영(한국 = GMT+9) 8bytes
날짜 정보만 표시 4bytes
시간 정보만 표시, 세계표준시(시간대 정보 반영하지 않음) 8bytes
시간 정보만 표시, 세계표준시(시간대 정보 반영) 12bytes
PostgreSQL은 True, yes, on, 1 모두를 True로 인식한다.
반대로 False, no, off, 0 모두를 False로 인식한다.
알 수 없는 정보 또는 일부가 불확실한 정보는 null로 분리한다.
대부분의 데이터 타입은 본인들의 배열형 타입을 가지고 있다. ex) INTEGER[ ], VARCHAR[ ], BOOLEAN[ ]
배열형으로 입력하는 방법으로는 두가지가 있다.
1. Array[ ]형태로 입력
Insert Into Member
Values ("홍길동", Array[01012345678,01087654321]);
Insert Into Member
Values ("홍길동", '{01012345678,01087654321}');
JSON은 JSONB와 달리 입력받는 텍스트의 정확한 사본을 만들어 저장한다. 또한 해당 데이터를 불러올 때는 재분석하여 출력한다.
JSONB는 JSON과 달리 텍스트를 binary형태로 분해 후 저장해서 입력 시 JSON에 비해 느리지만 출력 시 재분석 과정을 거치지 않고 바로 처리하기 때문에 출력 속도는 JSON에 비해 빠르다.