全部產品
Search
文件中心

Tablestore:SQL 查詢

更新時間:Jun 05, 2026

通過命令列工具進入 SQL 模式,使用 SQL 陳述式管理映射關係、查詢和動作表資料。

前提條件

支援的 SQL 陳述式

命令列工具支援以下 SQL 陳述式,完整文法參見SQL查詢

類別

SQL 陳述式

說明

DDL

CREATE TABLE

建立資料表或多元索引的映射關係。

ALTER TABLE

添加或刪除映射表的屬性列。

DROP MAPPING TABLE

刪除表的映射關係。

DESCRIBE

查看映射表的描述資訊。

DQL

SELECT

查詢表資料。支援 WHERE 條件、彙總函式、JOIN、LIMIT 等。

DBA

SHOW TABLES

列出當前執行個體下的所有映射表。

SHOW INDEX

查詢索引描述資訊。

DML

INSERT

寫入資料。僅適用於非事務表。

UPDATE

更新資料。僅適用於非事務表,需通過全主鍵等值條件指定單行。

DELETE

刪除資料。僅適用於非事務表,需通過全主鍵等值條件指定單行。

進入和退出 SQL 模式

執行sql命令進入 SQL 模式,執行exit;命令退出 SQL 模式。

sql

進入 SQL 模式後顯示以下提示:

Enter 'SQL' mode, input 'exit;' if you want to quit into 'COMMAND' mode.

建立映射關係

資料表需先建立映射關係,才能通過 SQL 查詢資料。

說明

時序表會自動建立映射關係,無需執行 CREATE TABLE。建立時序表後 SHOW TABLES 即可看到對應的映射表。

CREATE TABLE mytable(
    `uid` VARCHAR(1024),
    `pid` BIGINT(20),
    `col1` BIGINT(20),
    `col2` MEDIUMTEXT,
    PRIMARY KEY(`uid`,`pid`)
);
說明
  • VARCHAR 類型僅用於主鍵列,屬性列使用 MEDIUMTEXT。

  • 關於 SQL 資料類型與 Tablestore 資料類型的映射關係,請參見SQL資料類型映射

更新映射表屬性列

當資料表新增屬性列時,可以通過 ALTER TABLE 為映射表添加列。

ALTER TABLE mytable ADD COLUMN col3 MEDIUMTEXT;

查看映射表列表

SHOW TABLES;

返回結果樣本:

+----------------------+
| Tables_in_myinstance |
+----------------------+
| mytable              |
+----------------------+
| mytstable            |
+----------------------+
| mytstable::meta      |
+----------------------+

其中 mytable 為資料表的映射表,mytstable 為時序資料表,mytstable::meta 為時序中繼資料表。時序表和對應的中繼資料表均支援通過 SQL 查詢。

查看映射表資訊

DESCRIBE mytable;

返回結果樣本:

+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| uid   | varchar(1024) | NO | PRI | null    |       |
+-------+------------+------+-----+---------+-------+
| pid   | bigint(20) | NO   | PRI | null    |       |
+-------+------------+------+-----+---------+-------+
| col1  | bigint(20) | YES  |     | null    |       |
+-------+------------+------+-----+---------+-------+
| col2  | mediumtext | YES  |     | null    |       |
+-------+------------+------+-----+---------+-------+

時序表使用固定的單值模型 Schema:

DESCRIBE mytstable;
+-------------------+---------------+------+-----+---------+-------+
| Field             | Type          | Null | Key | Default | Extra |
+-------------------+---------------+------+-----+---------+-------+
| _m_name           | varchar(1000) | NO   | PRI | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _data_source      | varchar(1000) | NO   | PRI | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _tags             | varchar(1000) | NO   | PRI | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _time             | bigint(20)    | NO   | PRI | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _field_name       | varchar(1000) | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _long_value       | bigint(20)    | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _double_value     | double        | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _bool_value       | tinyint(1)    | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _string_value     | varchar(1000) | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _binary_value     | mediumblob    | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _attributes       | varchar(1000) | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
| _meta_update_time | bigint(20)    | YES  |     | null    |       |
+-------------------+---------------+------+-----+---------+-------+
說明

時序表採用單值模型,每個 field 展開為獨立一行。寫入時一行包含多個 field 時,SQL 查詢結果中會拆分為多行,每行只有一個 _*_value 列有值。

查看索引資訊

查看映射表關聯的索引列表及索引列資訊。

SHOW INDEX FROM mytable;

查詢資料

使用 SELECT 語句查詢映射表中的資料。

SELECT * FROM mytable;

樣本

  • 查詢指定條件的資料。

    SELECT * FROM mytable WHERE uid = 'user001' AND pid = 1;
  • 查詢行數。

    SELECT COUNT(*) FROM mytable;
  • 限制返回行數。

    SELECT * FROM mytable LIMIT 10;
  • 查詢時序表資料。

    SELECT * FROM mytstable LIMIT 10;
說明

建立時序表後,約 1 分鐘後才能通過 SQL 查詢到首次寫入的資料。已有時間軸追加資料可即時查詢。

寫入和修改資料

在 SQL 模式下對非事務表執行 INSERT、UPDATE 和 DELETE 操作(詳細約束和文法參見DML操作)。

重要
  • DML 操作僅適用於非事務表(即建立時未開啟事務的表)。

  • UPDATE 和 DELETE 需通過全主鍵等值條件指定單行。

  • 時序表不支援 DML 操作(INSERT、UPDATE、DELETE)。時序資料的寫入請使用 putts 或 import_timeseries 命令。

樣本

  • 插入一行資料。

    INSERT INTO mytable (uid, pid, col1) VALUES ('user001', 1, 100);
  • 更新指定行的資料。

    UPDATE mytable SET col1 = 200 WHERE uid = 'user001' AND pid = 1;
  • 刪除指定行。

    DELETE FROM mytable WHERE uid = 'user001' AND pid = 1;

刪除映射關係

當資料表的屬性列發生變化時,可以刪除映射關係後重新建立。

說明

時序表的映射關係由系統自動管理,不支援通過 DROP MAPPING TABLE 刪除。

DROP MAPPING TABLE mytable;