DB - PostgreSQL 데이터 타입

doohyunlm·2021년 7월 11일
1

SQL, DB

목록 보기
3/5
post-thumbnail

목차


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




1. 데이터 타입표



|형식|명칭|별명|설명|
|:---:|:---:|:---:|:---:|
|정수|smallint|int2|2 바이트 부호있는 정수|
||integer|int , int4|4 바이트 부호있는 정수|
||bigint|int8|8 바이트 부호있는 정수|
||bigserial|serial8|자동 증분 8 바이트 정수|
|정밀한 숫자|numeric [ ( p , s ) ]|decimal [ ( p , s ) ] |정확한 선택 가능한 높은 정밀도|
|부동 소수점|real|float4|단정 밀도 부동 소수점 (4 바이트)|
||double precision|float8|double (8 바이트)|
|자동 증가|smallserial|serial2|자동 증분 4 바이트 정수|
||serial|serial4|자동 증분 4 바이트 정수|
||bigserial|serial8|자동 증분 4 바이트 정수|
|문자열|character varying [ ( n ) ]|varchar [ ( n ) ] |가변 길이 문자열|
||character [ ( n ) ]|char [ ( n ) ] |고정 길이 문자열|
||text| |가변 길이 문자열|
|날짜/시간|time [ ( p ) ] [ without time zone ]| |시간 (시간대 없음)|
||time [ ( p ) ] with time zone|timetz|시간대가 있는 시간|
||timestamp [ ( p ) ] [ without time zone ]| |날짜 및 시간 (시간대 없음)|
||timestamp [ ( p ) ] with time zone|timestamptz|시간대있는 날짜와 시간|
||date| |달력의 날짜 (연월일)|
||interval [ fields ] [ ( p ) ]| |시간 간격|
|논리|boolean|bool|논리값 (true / false)|
|네트워크 주소|cidr| |IPv4 또는 IPv6 네트워크 주소|
||inet| |IPv4 또는 IPv6 호스트 주소|
||macaddr| |MAC (Media Access Control) 주소|
|비트열|bit [ ( n ) ]||고정 길이 비트열|
||bit varying [ ( n ) ]|varbit|가변 길이 비트열|
|도형|box| |평면 사각형|
||circle| |평면 원형|
||line| |평면의 무한 직선|
||lseg lseg| |평면 위의 선분|
||path| |평면의 기하학적 경로|
||point| |평면의 기하학 점|
||polygon| |평면의 닫힌 기하학적 경로|
|화폐|money| |화폐 금액|
|텍스트 검색|tsquery| |텍스트 검색 문의|
||tsvector| |텍스트 검색 문서|
||txid_snapshot| |사용자 수준의 트랜잭션 ID 스냅샷|
|uuid|uuid| |범용 고유 식별자|
|xml|xml| |XML 데이터|
|이진 데이터|bytea| |이진 데이터 ( "바이트 배열 (byte array)")|
|json|json| |텍스트 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
백엔드 개발자

0개의 댓글