表格存储兼容 MySQL 语法,为宽表和时序数据提供统一的 SQL 访问接口。支持 DDL、DQL、DML 操作,并可通过多元索引实现全文检索、向量检索等高级查询。
工作原理
表格存储在 NoSQL 结构化存储之上提供 SQL 引擎能力。通过 CREATE TABLE 为已有数据表建立映射关系后,即可使用 SQL 访问数据。系统根据 SQL 语句自动选择合适的索引加速查询。
与传统关系型数据库不同,表格存储的 CREATE TABLE 不创建物理表,而是为已有的数据表或多元索引建立 SQL 访问映射。DROP MAPPING TABLE 只删除映射关系,不影响底层数据。
SQL 引擎概念与表格存储概念的对应关系如下。
数据库概念 | 表格存储概念 | 描述 |
数据库 | 实例 | 按数据结构组织、存储和管理数据的仓库,可包含一个或多个表。 |
表 | 映射表 | 已有数据表的 SQL 访问映射。通过 CREATE TABLE 建立,由行和列组成。 |
索引 | 二级索引、多元索引 | 为加速数据查询而创建的存储结构。SQL 引擎自动选择合适的索引加速查询。 |
目前支持 SQL 查询功能的地域包括华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、西南1(成都)、中国香港、日本(东京)、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、德国(法兰克福)、英国(伦敦)、美国(硅谷)、美国(弗吉尼亚)。
支持的 SQL 语句
SQL 引擎支持以下语句。
分类 | SQL 语句 | 描述 |
CREATE TABLE | 为数据表或多元索引创建 SQL 映射关系。 | |
ALTER TABLE | 添加或删除属性列。 | |
DROP MAPPING TABLE | 删除映射关系(不影响底层数据)。 | |
SHOW TABLES | 列出当前实例中的映射表。 | |
SHOW INDEX | 查询索引描述信息。 | |
DESCRIBE | 查看表结构信息。 | |
DROP TABLE | 删除数据表。暂不支持。 | |
SELECT | 查询数据,支持条件过滤、统计聚合(MIN / MAX / SUM / AVG / COUNT)、GROUP BY、ORDER BY、LIMIT 等。 | |
SELECT JOIN | 跨表 JOIN 数据查询,支持 INNER / LEFT / RIGHT / CROSS JOIN。 | |
INSERT / UPDATE / DELETE | 写入、更新和删除数据。 | |
全文检索 / 数组 / 嵌套 / 向量 / JSON | 通过多元索引实现全文检索、数组查询、嵌套查询、向量检索、JSON 查询等高级功能。 | |
其他 | CREATE INDEX | 创建索引。暂不支持。 |
其他功能特性:
使用方式
可通过以下方式执行 SQL 查询。
使用方式 | 适用场景 | 参考文档 |
控制台 | 适用于小规模数据查询和验证,无需编写代码。 | |
命令行工具 | 适用于开发调试和自动化脚本。 | |
JDBC 直连 | Java 应用直接通过标准 JDBC 接口访问。 | |
Hibernate | Java ORM 框架集成,适用于已有 Hibernate 项目。 | |
MyBatis | Java 数据持久层框架集成,适用于已有 MyBatis 项目。 | |
Go 语言驱动 | Go 应用通过 database/sql 标准接口访问。 | |
SDK | 适用于应用程序中通过 SDK 编程执行 SQL 操作。 | |
SQL 操作符
表格存储 SQL 支持以下四类操作符。
算术运算符
可用于 SELECT 或 WHERE 子句中进行数值计算。
运算符 | 名称 | 说明 |
A+B | 加法 | 返回 A+B 的结果。 |
A-B | 减法 | 返回 A-B 的结果。 |
A*B | 乘法 | 返回 A*B 的结果。 |
A/B 或 A DIV B | 除法 | 返回 A/B 的结果。 |
A%B 或 A MOD B | 取余 | 返回 A/B 后取余数的结果。 |
关系运算符
判断是否符合指定条件。TRUE 返回 1,FALSE 返回 0。可用于 WHERE 子句。
运算符 | 名称 | 说明 |
A:=B | 赋值 | 将 B 的值赋给 A。 |
A=B | 等于 | A 等于 B 时返回 1,否则返回 0。 |
A!=B 或 A<>B | 不等于 | A 不等于 B 时返回 1,否则返回 0。 |
A>B | 大于 | A 大于 B 时返回 1,否则返回 0。 |
A<B | 小于 | A 小于 B 时返回 1,否则返回 0。 |
A>=B | 大于等于 | A 大于等于 B 时返回 1,否则返回 0。 |
A<=B | 小于等于 | A 小于等于 B 时返回 1,否则返回 0。 |
IN (A,B...) | 限定多个值 | 列值与任意一个值相同时返回 1,否则返回 0。 |
BETWEEN A AND B | 值在区间内 | 值 >= A 且 <= B 时返回 1,否则返回 0。 |
NOT BETWEEN A AND B | 值不在区间内 | 值 > B 或 < A 时返回 1,否则返回 0。 |
A LIKE B | 模式匹配 | 字符串匹配。 |
A NOT LIKE B | 不符合模式匹配 | 字符串不匹配。 |
逻辑运算符
判断表达式真假。TRUE 返回 1,FALSE 返回 0。可用于 WHERE 子句组成复杂条件。
运算符 | 名称 | 说明 |
A AND B 或 A&&B | 逻辑与 | A 和 B 均为 TRUE 时返回 1,否则返回 0。 |
A OR B | 逻辑或 | A 和 B 中至少一个为 TRUE 时返回 1,否则返回 0。 |
A XOR B | 逻辑异或 | A 和 B 不同时返回 1,否则返回 0。 |
NOT A 或 !A | 逻辑非 | A 为 FALSE 时返回 1,否则返回 0。 |
位运算符
用于对二进制数进行计算。操作数转为二进制后进行位运算,结果转回十进制。
运算符 | 名称 | 说明 |
A&B | 按位与 | 返回 A 和 B 按位与运算的结果。 |
A|B | 按位或 | 返回 A 和 B 按位或运算的结果。 |
A^B | 按位异或 | 返回 A 和 B 按位异或运算的结果。 |
~A | 按位非 | 返回 A 按位取反的结果。 |
数据类型映射
SQL 中所用字段对应于表中同名字段,两者的数据类型必须相匹配。
SQL 中主键列使用 VARBINARY 和 VARCHAR 时,建议最大长度设置为 1024。
SQL 中 BIGINT 和数据表中 Integer 均为 64 位整型。
SQL 中只有 BIGINT、VARBINARY 和 VARCHAR 支持作为主键列数据类型。
SQL 数据类型 | 数据表数据类型 | 多元索引数据类型 |
BIGINT | Integer | Integer |
VARBINARY(主键)/ MEDIUMBLOB(属性列) | Binary | Binary |
VARCHAR(主键)/ MEDIUMTEXT(属性列) | String | Keyword |
Text | ||
DOUBLE | Double | Double |
BOOL | Boolean | Boolean |
配额与限制
不支持事务功能。
SQL 语句中的关键字为保留字,不区分大小写。命名表或列时如需使用关键字,用
``符号转义。完整列表参见保留字与关键字。SQL 引擎对列名大小写不敏感。
SELECT Aa FROM t与SELECT aa FROM t等价。由于表格存储原始表的列名大小写敏感,SQL 会将列名统一转为小写匹配,因此原始表中不能同时存在仅大小写不同的列名。
其他限制参见SQL查询使用限制。
计费说明
SQL 查询本身不产生额外费用,查询过程中的表扫描、索引查询等操作按原计费规则收费。详细计费规则参见SQL查询计量计费。