表格存储 SQL 数据类型详解

本文主要介绍 Tablestore SQL中的数据类型与 MySQL 数据类型之间的映射关系。

背景介绍

Tablestore 数据类型

Tablestore 中的数据类型支持如下表所示,其中主键列支持的数据类型包括String、Integer和Binary,属性列支持的数据类型包括String、Integer、Double、Boolean和Binary。

  • 主键列支持的数据类型
数据类型 定义 大小限制
String UTF-8,可为空 长度不超过1 KB
Integer 64 bit,整型,支持自增列 8 Bytes
Binary 二进制数据,可为空 长度不超过1 KB
  • 属性列支持的数据类型
数据类型 定义 大小限制
String UTF-8,可为空 长度不超过2 MB
Integer 64 bit,整型 8 Bytes
Double 64 bit,Double类型 8 Bytes
Boolean True/False,布尔类型 1 Byte
Binary 二进制数据,可为空 长度不超过2 MB

MySQL 数据类型

MySQL 支持多种类型,大体上可以分为四类:数值类型、字符串类型、日期/时间类型和其它类型。

  • 数值类型
类型 大小 范围(有符号) 范围(无符号) 说明
BIT BIT(M),M取值范围1-64 依赖于M的值 依赖于M的值 比特值
BOOL/ BOOLEAN 1 byte 0 or 1 0 or 1 与TINYINT(1)等价
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT/INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值
DECIMAL/NUMERIC DECIMAL(M,D) M为精度,D为标度 依赖于M和D的值 依赖于M和D的值 小数值
  • 字符串类型
类型 大小 说明
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
BINARY 0-255 bytes 二进制形式的变长字符串
VARBINARY 0-65535 bytes 二进制形式的变长字符串
TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65 535 bytes 二进制形式的长文本数据
TEXT 0-65 535 bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据
ENUM 固定集合中的一个字符串对象 枚举类型
SET 固定集合中的0个或多个字符串对象 集合类型
  • 日期/时间类型
类型 大小 范围 格式 说明
DATE 3 bytes 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 bytes '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 bytes 1901/2155 YYYY 年份值
DATETIME 8 bytes 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 bytes 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳
  • 其它类型

包括 JSON类型、空间数据类型等,更详细的类型请参考 MySQL官方文档

数据类型映射

综合 Tablestore 和 MySQL 数据类型的语义与取值范围,目前版本中 Tablestore 和 MySQL的数据类型映射如下表所示,为一对一的映射关系。更多的数据类型将在后续的版本迭代中支持,敬请期待。

  • 主键列: INTEGER <=> BIGINT, STRING <=> VARCHAR(1024), BINARY <=> VARBINARY(1024)
  • 属性列:INTEGER <=> BIGINT, STRING <=> MEDIUMTEXT, BINARY <=> MEDIUMBLOB,

DOUBLE <=> DOUBLE, BOOLEAN <=> BOOL

SQL中字段数据类型 数据表中字段数据类型 是否支持做主键
BIGINT Integer
VARBINARY(主键)MEDIUMBLOB(属性列) Binary
VARCHAR (主键)MEDIUMTEXT(属性列) String
DOUBLE Double
BOOL Boolean

建表样例

Tablestore SQL 支持标准的SQL语法进行 CREATE TABLE, 以下展示一个全类型的SQL样例,您可以根据具体的业务需求进行字段schema的调整。

CREATE TABLE `full_type` (
    `pkstr` VARCHAR(1024),
    `pkint` BIGINT(20),
    `pkbinary` VARBINARY(1024),
    `colbinary` MEDIUMBLOB,
    `colbool` BOOL,
    `coldouble` DOUBLE,
    `colint` BIGINT(20),
    `colstr` MEDIUMTEXT,
    PRIMARY KEY(`pkstr`,`pkint`,`pkbinary`)
);

CREATE TABLE执行成功后,即可以在控制台上看到相应的表字段Schema。
表格存储 SQL 数据类型详解

写在最后

更详细的功能介绍,欢迎参考表格存储官网文档,可以查看具体的 SQL 语法,用例,限制项等。
想了解更多表格存储的用法或者咨询欢迎加群讨论:
可搜索群号『11789671』或『23307953』,亦可直接扫码加入。

表格存储 SQL 数据类型详解

上一篇:使用delphi 10.2 开发linux 上的Daemon


下一篇:阿里云Lindorm联合智臾科技发布金融高频交易数据量化分析与处理方案