表格存储 SQL 数据类型详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
表格存储 Tablestore,50G 2个月
简介: 本文主要介绍 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』,亦可直接扫码加入。

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
相关文章
|
24天前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
2月前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
2月前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
2月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
2月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
249 4
|
2月前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
97 1
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
89 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
40 0
|
2月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
49 0
|
2月前
|
SQL
使用SQL进行集合查询和数据维护
使用SQL进行集合查询和数据维护
38 0