⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
数据类型

通用数据类型

下表显示了所有内置的通用数据类型。别名列中列出的替代名称也可用于引用这些类型,但请注意,这些别名并非SQL标准的一部分,因此可能不被其他数据库引擎接受。

名称 别名 描述
BIGINT INT8, LONG 有符号八字节整数
BIT BITSTRING 由1和0组成的字符串
BLOB BYTEA, BINARY, VARBINARY 可变长度二进制数据
BOOLEAN BOOL, LOGICAL 逻辑布尔值 (true / false)
DATE   日历日期(年、月、日)
DECIMAL(prec, scale) NUMERIC(prec, scale) 具有给定宽度(精度)和标度的固定精度数字,默认为 prec = 18scale = 3
DOUBLE FLOAT8, 双精度浮点数(8字节)
FLOAT FLOAT4, REAL 单精度浮点数(4字节)
HUGEINT   有符号十六字节整数
INTEGER INT4, INT, SIGNED 有符号四字节整数
INTERVAL   日期/时间差
JSON   JSON对象(通过json 扩展
SMALLINT INT2, SHORT 有符号两字节整数
TIME   时间(无时区)
TIMESTAMP WITH TIME ZONE TIMESTAMPTZ 结合了时间和日期的类型,使用当前时区
TIMESTAMP DATETIME 时间和日期的组合
TINYINT INT1 有符号一字节整数
UBIGINT   无符号八字节整数
UHUGEINT   无符号十六字节整数
UINTEGER   无符号四字节整数
USMALLINT   无符号两字节整数
UTINYINT   无符号一字节整数
UUID   UUID数据类型
VARCHAR CHAR, BPCHAR, TEXT, STRING 可变长度字符串

多种类型之间可以进行隐式和显式类型转换,详情请参阅类型转换页面。

嵌套/复合类型

DuckDB支持五种嵌套数据类型:ARRAYLISTMAPSTRUCTUNION。每种类型都支持不同的用例,并具有不同的结构。

名称 描述 在列中使用时的规则 从值构建 在 DDL/CREATE 中定义
ARRAY 一种有序、固定长度的同类型数据值序列。 每行在每个 ARRAY 实例中必须具有相同的数据类型和相同数量的元素。 [1, 2, 3] INTEGER[3]
LIST 一种有序的同类型数据值序列。 每行在每个 LIST 实例中必须具有相同的数据类型,但可以有任意数量的元素。 [1, 2, 3] INTEGER[]
MAP 一个由多个命名值组成的字典,每个键具有相同类型,每个值也具有相同类型。键和值可以是任何类型,并且可以彼此不同。 行可以有不同的键。 map([1, 2], ['a', 'b']) MAP(INTEGER, VARCHAR)
STRUCT 一个由多个命名值组成的字典,其中每个键都是字符串,但每个键的值可以是不同的类型。 每行必须具有相同的键。 {'i': 42, 'j': 'a'} STRUCT(i INTEGER, j VARCHAR)
UNION 多种可选数据类型的联合,每次在一个值中存储其中一种。联合类型还包含一个判别器“tag”值,用于检查和访问当前设置的成员类型。 行可以设置为联合类型的不同成员类型。 union_value(num := 2) UNION(num INTEGER, text VARCHAR)

大小写敏感规则

MAP的键区分大小写,而UNIONSTRUCT的键不区分大小写。示例请参阅大小写敏感规则部分

更新嵌套类型的值

对嵌套类型的值执行更新操作时,DuckDB会执行一个删除操作,然后是一个插入操作。当在带有ART索引的表中使用时(无论是通过显式索引还是主键/唯一约束),这可能导致意外的约束违规

嵌套

ARRAYLISTMAPSTRUCTUNION 类型可以任意深度嵌套,只要遵守类型规则即可。

包含 LISTs 的结构体

SELECT {'birds': ['duck', 'goose', 'heron'], 'aliens': NULL, 'amphibians': ['frog', 'toad']};

包含 MAPs 列表的结构体

SELECT {'test': [MAP([1, 5], [42.1, 45]), MAP([1, 5], [42.1, 45])]};

包含 UNIONs 的列表

SELECT [union_value(num := 2), union_value(str := 'ABC')::UNION(str VARCHAR, num INTEGER)];

性能影响

数据类型的选择会对性能产生显著影响。详情请参阅性能指南

本节页面