SQL查询

更新时间:
复制为 MD 格式

表格存储兼容 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 语句

描述

DDL 操作

CREATE TABLE

为数据表或多元索引创建 SQL 映射关系。

ALTER TABLE

添加或删除属性列。

DROP MAPPING TABLE

删除映射关系(不影响底层数据)。

SHOW TABLES

列出当前实例中的映射表。

SHOW INDEX

查询索引描述信息。

DESCRIBE

查看表结构信息。

DROP TABLE

删除数据表。暂不支持

DQL 操作

SELECT

查询数据,支持条件过滤、统计聚合(MIN / MAX / SUM / AVG / COUNT)、GROUP BY、ORDER BY、LIMIT 等。

SELECT JOIN

跨表 JOIN 数据查询,支持 INNER / LEFT / RIGHT / CROSS JOIN。

DML 操作

INSERT / UPDATE / DELETE

写入、更新和删除数据。

多元索引操作

全文检索 / 数组 / 嵌套 / 向量 / JSON

通过多元索引实现全文检索、数组查询、嵌套查询、向量检索、JSON 查询等高级功能。

其他

CREATE INDEX

创建索引。暂不支持

其他功能特性:

使用方式

可通过以下方式执行 SQL 查询。

使用方式

适用场景

参考文档

控制台

适用于小规模数据查询和验证,无需编写代码。

控制台

命令行工具

适用于开发调试和自动化脚本。

通过命令行工具使用SQL查询

JDBC 直连

Java 应用直接通过标准 JDBC 接口访问。

通过JDBC直连使用SQL查询

Hibernate

Java ORM 框架集成,适用于已有 Hibernate 项目。

通过Hibernate使用SQL查询

MyBatis

Java 数据持久层框架集成,适用于已有 MyBatis 项目。

通过MyBatis使用SQL查询

Go 语言驱动

Go 应用通过 database/sql 标准接口访问。

通过Go语言驱动使用SQL查询

SDK

适用于应用程序中通过 SDK 编程执行 SQL 操作。

通过Java SDK使用SQL查询

通过Python SDK使用SQL查询

通过Go SDK使用SQL查询

通过Node.js SDK使用SQL查询

通过PHP SDK使用SQL查询

通过.NET 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 语句中的关键字为保留字,不区分大小写。命名表或列时如需使用关键字,用 `` 符号转义。完整列表参见保留字与关键字

  • SQL 引擎对列名大小写不敏感。SELECT Aa FROM tSELECT aa FROM t 等价。由于表格存储原始表的列名大小写敏感,SQL 会将列名统一转为小写匹配,因此原始表中不能同时存在仅大小写不同的列名。

其他限制参见SQL查询使用限制

计费说明

SQL 查询本身不产生额外费用,查询过程中的表扫描、索引查询等操作按原计费规则收费。详细计费规则参见SQL查询计量计费