表格存储 SQL 数据类型详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 本文主要介绍 Tablestore SQL中的数据类型与 MySQL 数据类型之间的映射关系。​## 背景介绍### Tablestore 数据类型Tablestore 中的数据类型支持如下表所示,其中主键列支持的数据类型包括String、Integer和Binary,属性列支持的数据类型包括String、Integer、Double、Boolean和Binary。- 主键列支持的数

本文主要介绍 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 语法,用例,限制项等。
想了解更多表格存储的用法或者咨询欢迎加群讨论:
可搜索群号『11789671』或『23307953』,亦可直接扫码加入。

相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
2天前
|
SQL 关系型数据库 MySQL
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
MYSQL根据查询结果删除sql 去除重复id 新增对比前一条与后一条数据 去重3种方法​ 窗口函数
|
1天前
|
SQL 流计算 API
实时计算 Flink版产品使用合集之ClickHouse-JDBC 写入数据时,发现写入的目标表名称与 PreparedStatement 中 SQL 的表名不一致如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
8 0
|
1天前
|
消息中间件 关系型数据库 网络安全
实时计算 Flink版操作报错合集之Flink sql-client 针对kafka的protobuf格式数据建表,报错:java.lang.ClassNotFoundException 如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
11 1
|
1天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之在使用Flink SQL向ClickHouse写入数据的过程中出现丢数据或重复数据的情况如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
16 1
|
2天前
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之将数据写入Elasticsearch时,若Elasticsearch中的字段类型为date,对应的SQL类型应该是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
22 0
|
2天前
|
SQL 资源调度 NoSQL
实时计算 Flink版产品使用合集之使用Flink CDC SQL MongoDB Connector时,可以采取什么措施来提升数据消费速率
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
19 0
|
3天前
|
SQL 关系型数据库 MySQL
|
3天前
|
SQL 关系型数据库 MySQL
|
3天前
|
SQL 数据库
Sql中如何添加数据
Sql中如何添加数据
10 0
|
3天前
|
SQL API 数据库
在Python中获取筛选后的SQL数据行数
在Python中获取筛选后的SQL数据行数
19 1

热门文章

最新文章