# Data types

Name Description Length constraints
INTEGER Signed 64-bit integer value. Usually referred to as BIGINT in other databases. -
BOOLEAN A boolean value, either TRUE or FALSE -
VARCHAR UTF8-encoded text Maximum number of bytes in the UTF-8 encoded representation of the string
BLOB Sequence of bytes Maximum number of bytes in the sequence
TIMESTAMP Datetime value with microsecond precision -
FLOAT IEEE-754 64-bit floating-point number -
UUID Universally Unique Identifier (UUID), 128-bit value -
JSON RFC 8259 textual JSON data Maximum number of bytes in the textual representation of the data



# Size constraints

Size constraint is specified with a [MAX_SIZE] suffix on the type, e.g. BLOB[16] represents a sequence of up to 16 bytes.

# NULL values

NULL values in immudb are not unique - two NULL values are considered equal on comparisons.

# Timestamp values

Timestamp values are internally stored as a 64-bit signed integer being a number of microseconds since the epoch time. Those values are not associated with any timezone, whenever a conversion is needed, it is considered to be in UTC.

# JSON primitive types and internal SQL types

Except for lists and objects, each JSON type is backed by a specific immudb internal SQL type. The mapping between JSON primitive types and SQL internal types is reported in the following table:


JSON primitive type Internal SQL type Description
STRING VARCHAR control characters, quotation marks and backslashes must be escaped
NUMBER FLOAT NaN, Infinity and -Infinity are not supported
BOOLEAN BOOLEAN only lowercase true and false are valid
NULL NULL -