数据类型
文章目录
1.基本数据类型
1.1.整数
- 整数Int8、Int16、Int32 和 Int64
- 如果加U就是无符号位
- 后面的数字代表位
- Int8就相当于以前学的byte,Int16就相当于short,int32就相当于int,int64就相当于long
1.2.浮点数
- 浮点数 Float32 和 Float64
- Float32就相当于是Float,Float64就相当于是Double
1.3.定点数
- 定点数 Decimal32、Decimal64 和Decimal128,Decimal(P,S)
- 后面的数字代表位
- P - 规模。效范围:[1-38],决定可以有多少个十进制数字(包括分数)
- S - 精度。有效范围:[0-P],决定数字的小数部分中包含的小数位数
- 等效声明
- Decimal32
- Decimal(1~9,S)
- Decimal64
- Decimal(10~18,S)
- Decimal128
- Decimal(19~38,S)
- Decimal32
- 运算精度变化的规则
- 加法,减法:S = max(S1, S2)。
- 乘法:S = S1 + S2。(s1范围>=s2范围)
- 除法:S = S1(s1为被除数,s1/s2)
1.4.布尔
- 布尔 UInt8 (无符号的byte只有0和1)限制值为0或1
2.字符串
- String、FixedString 和 UUID
- String 不限制长度(变长),相当于Varchar、Text、Clob 和 Blob 等字符类型
- FixedString(N)相当于Char,长度固定,数据长度不够时,添加空字节(null);长度过长返回错误消息
- UUID:32位,格式8-4-4-4-12,如果未被赋值,则用0填充
3.日期时间
- Date、DateTime、DateTime64
- Date: 2020-02-02 精确到天
- DateTime: 2020-02-02 20:20:20 精确到秒
- DateTime64: 2020-02-02 20:20:20.335 精确到亚秒,可以设置精度
4.复合类型
4.1.数组
- 创建数据:array(数据类型)或[],类型必须相同
4.2.元组
- 由多个元素组成,允许不同类型
- 创建数据:(T1, T2, …)或者Tuple(T1, T2, …)
4.3.枚举
- Enum8和Enum16两种枚举类型,它们除了取值范围不同之外,别无二致
- 枚举固定使用(String:Int)Key/Value键值对的形式定义数据(string的key,int的value)
- Enum8和Enum16分别会对应(String:Int8)和(String:Int16)
- 用(String:Int) Key/Value键值对的形式定义数据,键值对不能同时为空,不允许重复,key允许为空字符串,需要看到对应的值进行转换
4.4.嵌套
-
Nested(Name1 Type1,Name2 Type2,…)
-
相当于表中嵌套一张表,插入时相当于一个多维数组的格式,一个字段对应一个数组
5.其他类型
5.1.Nullable(TypeName)
- Nullable(TypeName)
- 只能与基础数据类型搭配使用
- 表示某个类型的值可以为NULL
- Nullable(Int8)表示可以存储Int8类型的值,没有值时存NULL
- 注意
- 不能与复合类型数据一起使用、
- 不能作为索引字段
- 尽量避免使用,字段被Nullable修饰后会额外生成[Column].null.bin 文件保存Null值,增加开销
5.2.Domain(域)
- IPv4 使用 UInt32 存储。如 116.253.40.133
- IPv6 使用 FixedString(16) 存储。如 2a02:aa08:e000:3100::2