데이터 모델

데이터 타입

지원유무 SQL 타입 이름 다른표현 크기 (바이트) 의미 표현 가능 범위
O boolean bool 1   true/false
  bit   1   1/0
  varbit bit varying      
O smallint tinyint, int2 2 small-range integer value -2^15 (-32,768) to 2^15 (32,767)
O integer int, int4 4 integer value -2^31 (-2,147,483,648) to 2^31 - 1 (2,147,483,647)
O bigint bit varying 8 larger range integer value -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)
O real int8 4 variable-precision, inexact, real number value -3.4028235E+38 to 3.4028235E+38 (6 decimal digits precision)
O float[(n)] float4 4 or 8 variable-precision, inexact, real number value  
O double float8, double precision 8 variable-precision, inexact, real number value 1 .7E–308 to 1.7E+308 (15 decimal digits precision)
  number decimal      
  char[(n)] character      
  varchar[(n)] character varying      
O text text   variable-length unicode text  
  binary binary      
  varbinary[(n)] binary varying      
O blob bytea   variable-length binary string  
O date        
O time        
  timetz time with time zone      
O timestamp        
  timestamptz        
O inet4   4 IPv4 address  

실수 사용하기 (real 과 double)

real 과 double 데이터 타입들은 각각 자바의 기본형중 float와 double 타입으로 생각할 수 있습니다. 자바 기본형에서 float와 double 타입은 모두 IEEE 754 규격을 따릅니다. 그래서, 이들 타입은 SQL 표준의 데이터 타입과 정확하게 일치합니다.

  • float[( n )] 표현은 n의 크기에 따라 float 혹은 double 타입으로 표현됩니다. n은 1~53 이내의 정수이며, 기본값은 53입니다.
  • 만약 n의 범위가 1과 24 사이라면, 6자리 소수점의 정밀도를 가진 float 타입으로 표현됩니다.
  • 만약 n의 범위가 25와 53 사이라면, 15자리 소수점의 정밀도를 가진 double 타입으로 표현됩니다.
  • 정확한 비교를 목적으로 WHERE절에 실수값을 사용하는 경우라면 근사치를 대입해서는 안됩니다. 특히, 비교 연산자인 > 와 < 연산자의 경우에는 잘 동작하지만, -와 <> 연산자에서는 원하는 결과를 얻지 못하는 경우가 있습니다.