DB - PostgreSQL 데이터 타입

doohyunlm·2021년 7월 11일
4

DB-PostgreSQL

목록 보기
2/3
post-thumbnail
post-custom-banner

목차


  1. 데이터 타입표
  2. 타입 설명
  3. 마치며




1. 데이터 타입표



형식명칭별명설명
정수smallintint22 바이트 부호있는 정수
integerint , int44 바이트 부호있는 정수
bigintint88 바이트 부호있는 정수
bigserialserial8자동 증분 8 바이트 정수
정밀한 숫자numeric [ ( p , s ) ]decimal [ ( p , s ) ]정확한 선택 가능한 높은 정밀도
부동 소수점realfloat4단정 밀도 부동 소수점 (4 바이트)
double precisionfloat8double (8 바이트)
자동 증가smallserialserial2자동 증분 2 바이트 정수
serialserial4자동 증분 4 바이트 정수
bigserialserial8자동 증분 8 바이트 정수
문자열character varying [ ( n ) ]varchar [ ( n ) ]가변 길이 문자열
character [ ( n ) ]char [ ( n ) ]고정 길이 문자열
text가변 길이 문자열
날짜/시간time [ ( p ) ][ without time zone ]시간 (시간대 없음)
time [ ( p ) ] with time zonetimetz시간대가 있는 시간
timestamp [ ( p ) ][ without time zone ]날짜 및 시간 (시간대 없음)
timestamp [ ( p ) ] with time zonetimestamptz시간대있는 날짜와 시간
date달력의 날짜 (연월일)
interval [ fields ][ ( p ) ]시간 간격
논리booleanbool논리값 (true / false)
네트워크 주소cidrIPv4 또는 IPv6 네트워크 주소
inetIPv4 또는 IPv6 호스트 주소
macaddrMAC (Media Access Control) 주소
비트열bit [ ( n ) ]고정 길이 비트열
bit varying [ ( n ) ]varbit가변 길이 비트열
도형box평면 사각형
circle평면 원형
line평면의 무한 직선
lseg lseg평면 위의 선분
path평면의 기하학적 경로
point평면의 기하학 점
polygon평면의 닫힌 기하학적 경로
화폐money화폐 금액
텍스트 검색tsquery텍스트 검색 문의
tsvector텍스트 검색 문서
txid_snapshot사용자 수준의 트랜잭션 ID 스냅샷
uuiduuid범용 고유 식별자
xmlxmlXML 데이터
이진 데이터bytea이진 데이터 ( "바이트 배열 (byte array)")
jsonjson텍스트 json 데이터
jsonb바이너리 json 데이터






2. 타입 설명


2-1. 숫자 형식



  1. 정수 형식(smallint, integer, bigint)

  • 정수이므로 소수점이 있는 숫자는 처리 할 수 없습니다.

  • 소수점이 있는 숫자를 저장하게 되면 정수로 변환되어 저장됩니다.

  • 각 데이터 타입에 저장할 수 있는 값의 범위가 정해져 있어 범위를 초과 한 값을 저장하려고 하면 오류가 발생합니다.



  1. 정밀한 숫자 (numeric, decimal)

  • numeric 및 decimal 타입은 매우 큰 숫자를 저장할 수 있습니다.

  • 연산을 해도 오차가 발생하고 정확하게 할 수 있는 데이터 타입입니다.

  • 처리는 정수와 부동 소수점 데이터 형과 비교해 매우 늦어 지므로 주의가 필요합니다.



  1. 부동 소수점 형식 (real, double precision)

  • 부동 소수점에서 저장하고 검색 할 때 오차가 발생할 수 있으므로 정확한 연산 등에는 적합하지 않습니다.




2-2. 자동 증가 형식



  1. 자동 증가 형식(smallserial, serial, bigserial)

  • 자동으로 지금까지 등록된 값보다 큰 값(일반적으로 1 큰 값)이 자동으로 저장됩니다.

  • MySQL에서의 AUTO_INCREMENT를 설정 한 것과 비슷합니다.




2-3. 문자열 형식



  1. 문자열 형식(varchar, char, text)

  • character varying(n)은 가변 길이의 문자형이고 최대 길이(n)까지의 문자를 저장할 수 있습니다.

  • character(n)은 고정 길이 문자형이며 저장할 문자가 n개가 되지 않는 경우에는 나머지는 공백으로 채워집니다.

  • 두 문자형 모두 n개의 문자보다 긴 문자열을 저장하려고 하면 에러가 발생하며 n개의 문자보다 짧으면 n개의 문자만 저장됩니다.

  • 길이를 지정하지 않고 character varying라고만 지정하면 문자 제한이 없는 것으로 간주합니다.

  • 길이를 지정하지 않고 character라고만지정하면 character(1)로 간주합니다.

  • text 형식은 길이에 제한이 없는 가변 길이 문자형이고 매우 긴 문자열을 포함하는 경우에 사용합니다.



PostgreSQL에서는 n은 n byte가 아닌 n length입니다.
한글을 2byte로 처리하는 게 아닌 length로만 체크하면 됩니다.




2-4. 날짜/시간 형식



  1. 날짜/시간 형식(timestamp, interval, data 등)

  • with time zone은 현재 있는 지역의 시간대를 표시합니다.

  • 시간대가 없을 시 UTC시간대로 표시합니다.




2-5. 논리 값 형식



  1. 논리 값 데이터 형식(boolean)

  • boolean 형은 참 또는 거짓을 나타내는 값 중 하나를 포함합니다.




2-5. 네트워크 주소 형식



1.네트워크 주소 형식(cidr, inet, macaddr)


  • inet 형, cidr 형 둘 다 인터넷 주소의 표기 방법입니다.

  • IPv4에서도 IPv6를 모두 작성 가능합니다.

  • macaddr 형은 하드웨어 고유의 MAC 주소를 저장하는 형식입니다.




2-5. JSON 형식



1.JSON 형식(JSON, JSONB)


  • json 형식은 9버전부터 도입된 타입입니다.

  • json 형식은 TEXT로 저장하는 것과 다를바 없으나 jsonb 형식은 바이너리 형태로 저장하여 인덱싱 기능을 제공합니다.




3. 마치며



  • postgreSQL의 데이터 타입 설명입니다.

  • 틀린 부분이 있으면 말씀 부탁드리겠습니다.

profile
백엔드 개발자
post-custom-banner

0개의 댓글