Skip to main content
Version: 1.1.0

Overview

Data Types

SurrealQL allows you to describe data with specific data types. These data types are used to validate data and to generate the appropriate database schema.

TypeDescription
anyUse this when you explicitly don't want to specify the field's data type. The field will allow any data type supported by SurrealDB.
arrayAn array of items. The array type also allows you to define which types can be stored in the array and the max length.
  • array
  • array<string>
  • array<string, 10>
setA set of items. The array type also allows you to define which types can be stored in the array and the max length. Items are automatically deduplicated.
  • set
  • set<string>
  • set<string, 10>
boolDescribes whether something is truthy or not.
datetimeAn ISO 8601 compliant data type that stores a date with time and time zone.
decimalUses BigDecimal for storing any real number with arbitrary precision.
durationStore a value representing a length of time. Can be added or subtracted from datetimes or other durations.
floatStore a value in a 64 bit float.
intStore a value in a 64 bit integer.
numberStore numbers without specifying the type. SurrealDB will detect the type of number and store it using the minimal number of bytes. For numbers passed in as a string, this field will store the number in a BigDecimal.
objectStore formatted objects containing values of any supported type with no limit to object depth or nesting.
optionMakes types optional and guarantees the field to be either empty (NONE), or a number.
  • option<number>
stringDescribes a text-like value.
recordStore a reference to another record. The value must be a Record ID.
  • record
  • record<string>
  • record<string | number>
geometryRFC 7946 compliant data type for storing geometry in the GeoJson format.
  • geometry<feature>
  • geometry<point>
  • geometry<line>
  • geometry<polygon>
  • geometry<multipoint>
  • geometry<multiline>
  • geometry<multipolygon>
  • geometry<collection>

Examples

geometry

-- Define a field with a single type
DEFINE FIELD location ON TABLE restaurant TYPE geometry<point>;
-- Define a field with any geometric type
DEFINE FIELD area ON TABLE restaurant TYPE geometry<feature>;
-- Define a field with specific geometric types
DEFINE FIELD area ON TABLE restaurant TYPE geometry<polygon|multipolygon|collection>;