数据类型
更新时间 2026-02-05 18:29:45
最近更新时间: 2026-02-05 18:29:45
本页介绍DRDS的数据类型,包括数字类型、字符类型、时间日期类型和布尔类型。
注意
暂不支持用户自定义数据类型。
数字类型
注意
integer类型不能使用unsigned无符号属性。
自增用8字节bigint,不要使用4字节integer。
| 名字 | 存储尺寸 | 描述 | 范围 |
|---|---|---|---|
| smallint | 2字节 | 小范围整数 | 小范围整数-32768 到+32767 |
| integer | 4字节 | 整数的典型选择 | -2147483648 到 +2147483647 |
| bigint | 8字节 | 大范围整数 | 大范围整数-9223372036854775808 到+9223372036854775807 |
| decimal | 可变 | 用户指定精度,精确 | 最高小数点前131072位,以及小数点后16383位 |
| numeric | 可变 | 用户指定精度,精确 | 最高小数点前131072位,以及小数点后16383位 |
| real | 4字节 | 可变精度,不精确 | 6位十进制精度 |
| double precision | 8字节 | 可变精度,不精确 | 15位十进制精度 |
| serial | 4字节 | 自动增加的整数 | 1到2147483647 |
字符类型
| 名字 | 描述 |
|---|---|
| character varying(n),varchar(n) | 有限制的变长 |
| character(n),char(n) | 定长,空格填充 |
| text | 1GB |
set 注意 仅当V5.1.20.0.13及以后版本的实例支持该数据类型。 | 字符串对象,可以包含0个或多个值,每个值都必须从创建表时指定的允许值列表中选择。 set列值由多个集合成员组成,成员之间使用逗号 (,) 分隔,因此,set成员值本身不能包含逗号 (,) 。 |
时间、日期类型
注意
对时间范围没有要求时,强烈建议采用timestamp取代datetime,因为timestamp占用的字节(4个字节)比datetime占用的字节(8个字节)更短。两者区别如下:
时间范围:
timestamp值不能早于1970或晚于2037
datetime 以
’YYYY-MM-DD HH:MI:SS’格式检索和显示DATETIME值。支持的范围为’1000-01-01 00:00:00'到’9999-12-31 23:59:59’
存储方式:
timestamp:4个字节储存;值以UTC格式保存;时区转化,存储时对当前的时区进行转换,检索时再转换回当前的时区
datetime:8个字节储存;实际格式储存;与时区无关
| 名字 | 存储尺寸 | 取值范围 | 默认值 | 说明 |
|---|---|---|---|---|
| year | 1字节 | 1901到2155 | 0000 | 一般不使用 |
| date | 3字节 | 1000-01-01到9999-12-31 | 0000-00-00 | 推荐用于存储类似生日、订单日期样式的数据 |
| time | 3字节 | -838:59:59到838:59:59 | 00:00:00 | 一般不使用 |
| datetime | 8字节 | 1000-01-01 00:00:00到9999-12-31 23:59:59 | 0000-00-00 00:00:00 | 推荐使用timestamp |
| timestamp | 4字节 | 1970-01-01 00:00:01到2038-01-19 03:14:07 | 0000-00-00 00:00:00 | 推荐使用 |
布尔类型
| 名字 | 存储尺寸 | 描述 |
|---|---|---|
| boolean | 1字节 | 状态为真或假 |
JSON类型
注意
JSON可用于存储非结构化数据,典型场景为用户标签,不要将JSON用于频繁更新的字段场景。
| 名字 | 存储尺寸 | 描述 | 范围 |
|---|---|---|---|
| JSON | 动态(最小开销约 2 字节,通常大于文本) | 用于存储结构化 JSON 数据,支持嵌套对象、数组、键值对等复杂结构,底层为二进制格式 | 任意合法JSON文本,大小最大 1GB(受max_allowed_packet限制) |