一基本数据类型
1整数类型:
Int8
/Int16
/Int32
/Int64
分别对应mysql类型tinyint
/smallint
/int
/bigint
取值范围:是-2的(Int后数字-1)的平方到2的(Int后数字的平方-1)-1,Int8
对应-128~127
UInt8
/UInt16
/UInt32
/UInt64
前面加U 例如 UInt8 代表全部是正数,
取值范围0到2的Int后面数字次方-1,如UInt8
对应0-255
2 浮点类型:
Float32
/Float64
分别对应mysql的float与double
Decimal(n,p)对应于mysql decimal(n,p)
但是有简写形式Decimal32(p)
,Decimal64(p)
,Decimal128(p),
分别对应
Decimal(1~9,p)
,Decimal(10~18,p)
,Decimal(19~38,p)
3 字符串类型
String
/FixedString
/UUID
String不像mysql一样有大小限制,它可以表示成msyql varchar
/text
/clob
/blob
的合集
FixedString(n) 定长字符串,相当于char
4 日期类型
Date
yyyy-MM-dd格式
DateTime
yyyy-MM-dd HH:mm:ss格式
DateTime64
精确到时间戳的毫秒
二 复杂数据类型
1 数组
Array(类型)
create table ArrayTest(arr Array(String))engine=TinyLog;
insert into ArrayTest values(['a','b']);
insert into ArrayTest values(array('a','b','c'));
select * from ArrayTest
2 Tuple元组类型
Array中只能有一种数据类型,而Tuple可以是自己定义的多种类型
Tuple(类型1,类型2,类型3…)
create table tupleTest(tup Tuple(Int32,String,Decimal(2,1)))engine =TinyLog ;
insert into tupleTest values((1,'zhangsan',1.2));
select * from tupleTest;
3 枚举
Enum8(xxx)/Enum16(xxx)分别对应 [-128, 127],[-32768, 32767]
用法:
create table enumTest (e Enum8('hello' = 1, 'world' = 2))engine= TinyLog;
insert into enumTest values('world');
insert into enumTest values('aaa');
第二条sql会报错
枚举类型的排序会根据后面对应的int类型排.
4 嵌套类型
Nested(name1 type1,name2 type2…)
可以理解成Array(Array(type1),Array(type2)…)
create table nestedTest(n Nested(id Int32,name String))engine=TinyLog;
insert into nestedTest values([1,2],['zhangsan','lisi']);
insert into nestedTest values([3,4,5],['zhaoliu','tianqi']);
第二行报错,因为同一行中的两个字段id与name长度必须一样.
查询:
select n.id,n.name from nestedTest
5 Nullable(type)可为null的类型
create table nullTest(id Int32)engine =TinyLog;
insert into nullTest values(null);
会报错,不允许为null
create table nullTest2(id Nullable(Int32))engine =TinyLog;
insert into nullTest2 values(null);
还有一些很少很少用的就不说了