1.数值
(1)整数Int8、Int16、Int32 和 Int64
(2)浮点数 Float32 和 Float64
float精度是:7~8位有效数字
double精度是:16~17位有效数字
(3)定点数 Decimal32、Decimal64 和Decimal128
Decimal(P, S):P代表精度,决定总位数(整数部分+小数部分),取值范围是1~38; S代表规模,决定小数位数,取值范围是0~P。
Decimal运算时的精度
(4)布尔
使用UInt8 限制值为0或1
2.字符串
String、FixedString 和 UUID
(1)String 不限制长度,相当于Varchar、Text、Clob 和 Blob 等字符类型
(2)FixedString(N)相当于Char,长度固定,数据长度不够时,添加空字节(null);长度过长返回错误消息
(3)UUID:32位,格式8-4-4-4-12,如果未被赋值,则用0填充
3.日期时间类型
DateTime、DateTime64 和 Date
Date: 2020-02-02 精确到天
DateTime: 2020-02-02 20:20:20 精确到秒
DateTime64: 2020-02-02 20:20:20.335 精确到亚秒,可以设置精度
均支持字符串写入
4.复合类型
包括数组、元组、枚举和嵌套
(1)枚举类型Enum8 (String:Int8)和Enum16(String:Int16)
用(String:Int) Key/Value键值对的形式定义数据,键值对不能同时为空,不允许重复,key允许为空字符串,需要看到对应的值进行转换:SELECT CAST(x, ‘Int8’) FROM nx_enum_test;
(2)数组
创建数据:array(T)或[],类型必须相同
(3)元组
由多个元素组成,允许不同类型
创建数据:(T1, T2, …),Tuple(T1, T2, …)
(4)嵌套类型
Nested(Name1 Type1,Name2 Type2,…)
相当于表中嵌套一张表,插入时相当于一个多维数组的格式,一个字段对应一个数组
5.其他类型
(1)Nullable(TypeName),只能与基础数据类型搭配使用,表示某个类型的值可以为NULL;Nullable(Int8)表示可以存储Int8类型的值,没有值时存NULL
注意:
1)不能与复合类型数据一起使用
2)不能作为索引字段
3)尽量避免使用,字段被Nullable修饰后会额外生成[Column].null.bin 文件保存Null值,增加开销
(2)Domain
Pv4 使用 UInt32 存储。如 116.253.40.133
IPv6 使用 FixedString(16) 存储。如 2a02:aa08:e000:3100::2