Use o modo SQL na Tablestore CLI para gerenciar mapeamentos de tabelas e consultar ou modifique dados.
Pré-requisitos
Tablestore CLI instalada e credenciais de acesso configuradas. Para mais informações, consulte Tablestore CLI.
Tabela de dados ou de séries temporais criada. Para mais detalhes, consulte Operações de tabela de dados ou Operações de tabela de séries temporais.
Instruções SQL compatíveis
A Tablestore CLI é compatível com as seguintes instruções SQL. Para a sintaxe completa, consulte Consulta SQL.
|
Categoria |
Instrução SQL |
Descrição |
|
DDL |
CREATE TABLE |
Crie um mapeamento para uma tabela de dados ou índice de busca. |
|
ALTER TABLE |
Adiciona ou remove colunas de atributo em uma tabela de mapeamento. |
|
|
DROP MAPPING TABLE |
Exclua o mapeamento de uma tabela. |
|
|
DESCRIBE |
Visualize o esquema de uma tabela de mapeamento. |
|
|
DQL |
SELECT |
Consulta dados da tabela. Permite usar condições WHERE, funções de agregação, JOIN e LIMIT. |
|
DBA |
SHOW TABLES |
Lista todas as tabelas de mapeamento na instância atual. |
|
SHOW INDEX |
Visualize detalhes do índice. |
|
|
DML |
INSERT |
Grava dados. Aplica-se apenas a tabelas sem transação. |
|
UPDATE |
Atualize dados. Aplica-se apenas a tabelas sem transação. Especifique uma única linha com condições de igualdade em todas as colunas de chave primária. |
|
|
DELETE |
Exclua dados. Aplica-se apenas a tabelas sem transação. Especifique uma única linha com condições de igualdade em todas as colunas de chave primária. |
Entrar e sair do modo SQL
Execute sql para entrar no modo SQL e exit; para retornar ao modo de comando.
sql
Ao entrar no modo SQL, a CLI exibe:
Enter 'SQL' mode, input 'exit;' if you want to quit into 'COMMAND' mode.
Crie um mapeamento
Tabelas de dados exigem um mapeamento para consultas SQL.
O mapeamento de tabelas de séries temporais é automático. Ignore o CREATE TABLE e execute SHOW TABLES para verifique.
CREATE TABLE mytable(
`uid` VARCHAR(1024),
`pid` BIGINT(20),
`col1` BIGINT(20),
`col2` MEDIUMTEXT,
PRIMARY KEY(`uid`,`pid`)
);
Use VARCHAR exclusivamente para colunas de chave primária. Para colunas de atributo, use MEDIUMTEXT.
Para os mapeamentos entre tipos de dados SQL e do Tablestore, consulte Mapeamentos de tipo de dados em SQL.
Visualize tabelas de mapeamento
SHOW TABLES lista todas as tabelas de mapeamento na instância atual.
SHOW TABLES;
Saída de exemplo:
+----------------------+
| Tables_in_myinstance |
+----------------------+
| mytable |
+----------------------+
| mytstable |
+----------------------+
| mytstable::meta |
+----------------------+
mytable é a tabela de mapeamento de uma tabela de dados. mytstable é uma tabela de dados de séries temporais e mytstable::meta é a tabela de metadados de séries temporais. Tanto as tabelas de séries temporais quanto suas tabelas de metadados aceitam consultas SQL.
Visualize detalhes da tabela de mapeamento
Para inspecionar os detalhes das colunas, execute DESCRIBE em uma tabela de mapeamento.
DESCRIBE mytable;
Saída de exemplo:
+-------+------------+------+-----+---------+-------+
| 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 | |
+-------+------------+------+-----+---------+-------+
Tabelas de séries temporais usam um esquema fixo de valor único:
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 | |
+-------------------+---------------+------+-----+---------+-------+
Tabelas de séries temporais usam um modelo de valor único em que cada campo se expande para uma linha separada. Ao gravar uma linha com vários campos, cada um aparece como uma linha distinta no resultado da consulta SQL, com apenas uma coluna _*_value preenchida.
Visualize informações de índice
SHOW INDEX exibe os índices associados a uma tabela de mapeamento e seus detalhes de coluna.
SHOW INDEX FROM mytable;
Consultar dados
Use a instrução SELECT para consultar dados de uma tabela de mapeamento.
SELECT * FROM mytable;
Exemplos
-
Filtre por condições específicas.
SELECT * FROM mytable WHERE uid = 'user001' AND pid = 1; -
Conte o número de linhas.
SELECT COUNT(*) FROM mytable; -
Limite o número de linhas retornadas.
SELECT * FROM mytable LIMIT 10; -
Consulte dados de tabelas de séries temporais.
SELECT * FROM mytstable LIMIT 10;
Após crie uma tabela de séries temporais, os dados iniciais levam cerca de um minuto para ficarem disponíveis para consulta. Dados adicionados a linhas do tempo existentes podem ser consultados imediatamente.
Gravar e modifique dados
No modo SQL, execute instruções INSERT, UPDATE e DELETE em tabelas sem transação. Para a sintaxe completa e restrições, consulte Operações DML.
Instruções DML aplicam-se somente a tabelas sem transação (tabelas criadas sem transações habilitadas).
UPDATE e DELETE exigem condições de igualdade em todas as colunas de chave primária para especifique uma única linha.
Tabelas de séries temporais não aceitam instruções DML (INSERT, UPDATE e DELETE). Para gravar dados de séries temporais, use o comando
puttsouimport_timeseries.
Exemplos
-
Insira uma linha.
INSERT INTO mytable (uid, pid, col1) VALUES ('user001', 1, 100); -
Atualize uma linha específica.
UPDATE mytable SET col1 = 200 WHERE uid = 'user001' AND pid = 1; -
Exclua uma linha específica.
DELETE FROM mytable WHERE uid = 'user001' AND pid = 1;
Atualize colunas da tabela de mapeamento
Se você adicionar ou remover colunas de uma tabela de dados, use ALTER TABLE para atualize o mapeamento.
ALTER TABLE mytable ADD COLUMN col3 MEDIUMTEXT;
Exclua um mapeamento
Quando as colunas de atributo de uma tabela de dados mudarem, exclua o mapeamento e crie-o novamente.
O sistema gerencie automaticamente os mapeamentos de tabelas de séries temporais, que não podem ser excluídos com DROP MAPPING TABLE.
DROP MAPPING TABLE mytable;