数据类型
更新时间 2025-06-17 10:55:33
最近更新时间: 2025-06-17 10:55:33
本页介绍DRDS的数据类型,包括数字类型、字符类型、二进制数据类型、日期类型和布尔类型。
开发限制
DRDS对于数据类型有如下开发限制:
不支持用户自定义数据类型。
integer类型不使用unsigned无符号属性。
自增用8字节bigint,不要使用4字节integer。
日期类型用DATETIME 类型,需要精确到毫秒用DATETIME(6),不要使用integer、timestamp。
类型JSON可用于存储非结构化数据,典型场景为用户标签,不要将JSON用于频繁更新的字段场景。
类别设计,用ENUM+CHECK 约束,不要使用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位十进制精度 |
| smallserial | 2字节 | 自动增加的小整数 | 1到32767 |
| serial | 4字节 | 自动增加的整数 | 1到2147483647 |
| bigserial | 8字节 | 自动增长的大整数 | 1到9223372036854775807 |
字符类型
| 名字 | 描述 |
|---|---|
| character varying(n),varchar(n) | 有限制的变长 |
| character(n),char(n) | 定长,空格填充 |
| text | 1GB |
二进制数据类型
| 名字 | 存储尺寸 | 描述 |
|---|---|---|
| bytea | 1或4字节外加真正的二进制串 | 变长二进制串 |
日期类型
| 名字 | 存储尺寸 | 描述 | 最小值 | 最大值 | 解析度 |
|---|---|---|---|---|---|
| timestamp [ (p) ] [ without time zone ] | 8字节 | 包括日期和时间(无时区) | 4713 BC | 294276 AD | 1微秒/14位 |
| timestamp [ (p) ] [ with time zone ] | 8字节 | 包括日期和时间(有时区) | 4713 BC | 294276 AD | 1微秒/14位 |
| date | 4字节 | 日期(没有一天中的时间) | 4713 BC | 5874897 AD | 1日 |
| time [ (p) ] [ without time zone ] | 8字节 | 一天中的时间(无时区) | 0:00:00 | 24:00:00 | 1微秒/14位 |
| time [ (p) ] [ with time zone ] | 12字节 | 仅是一天中的时间,带有时区 | 00:00:00+1459 | 24:00:00-1459 | 1微秒/14位 |
| interval [fields ] [ (p) ] | 16字节 | 时间间隔 | -178000000年 | 178000000年 | 1微秒/14位 |
布尔类型
| 名字 | 存储尺寸 | 描述 |
|---|---|---|
| boolean | 1字节 | 状态为真或假 |
JSON类型
| 名字 | 存储尺寸 | 描述 | 范围 |
|---|---|---|---|
| JSON | 动态(最小开销约 2 字节,通常大于文本) | 用于存储结构化 JSON 数据,支持嵌套对象、数组、键值对等复杂结构,底层为二进制格式 | 任意合法JSON文本,大小最大 1GB(受max_allowed_packet限制) |