Todos os produtos
Search
Central de documentação

Tablestore:Operações DDL

Última atualização: Jul 03, 2026

As operações DDL do Tablestore criam mapeamentos SQL para tabelas de dados ou índices de pesquisa existentes e gerenciam o esquema e os metadados das tabelas de mapeamento.

Visão geral das instruções DDL

Instrução

Engine

Descrição

CREATE TABLE

tablestore

Cria um mapeamento para uma tabela de dados. O mecanismo SQL seleciona automaticamente o índice ideal para consultas.

CREATE TABLE

searchindex

Cria um mapeamento para um índice de pesquisa. O mecanismo SQL executa consultas usando o índice de pesquisa especificado.

ALTER TABLE

-

Adiciona ou remove colunas de atributo em uma tabela de mapeamento existente.

DROP MAPPING TABLE

-

Remove um mapeamento sem afetar a tabela de dados ou o índice subjacente.

DESCRIBE

-

Retorna os nomes dos campos, tipos de dados, sinalizadores de chave primária e aceitação de valores nulos de uma tabela de mapeamento.

SHOW INDEX

-

Retorna as informações de índice associadas a uma tabela de mapeamento, incluindo índices de chave primária, secundários e de pesquisa.

SHOW TABLES

-

Lista todas as tabelas de mapeamento na instância atual.

Nota

Diferentemente dos bancos de dados relacionais tradicionais, CREATE TABLE no Tablestore não cria uma tabela física. Em vez disso, cria um mapeamento de acesso SQL para uma tabela de dados ou índice de pesquisa existente. DROP MAPPING TABLE remove apenas o mapeamento e mantém os dados subjacentes intactos.

Criar um mapeamento de tabela de dados

Uma instrução CREATE TABLE com ENGINE='tablestore' cria um mapeamento para uma tabela de dados existente. Após a criação do mapeamento, o mecanismo SQL seleciona automaticamente o índice ideal (chave primária, índice secundário ou índice de pesquisa) para executar consultas.

Sintaxe

CREATE TABLE [IF NOT EXISTS] table_name(
  column_name data_type [NOT NULL | NULL], ...
  PRIMARY KEY(key_part [, key_part])
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';

Para tabelas com uma única coluna de chave primária, especifique PRIMARY KEY diretamente na definição da coluna:

CREATE TABLE [IF NOT EXISTS] table_name(
  column_name data_type PRIMARY KEY,
  column_name data_type [NOT NULL | NULL], ...
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency}';

Parâmetros

Parâmetro

Obrigatório

Descrição

IF NOT EXISTS

Não

Se especificado, o sistema não retorna erro quando a tabela de mapeamento já existe. Caso contrário, ocorre o erro Table already exists.

table_name

Sim

Nome da tabela de mapeamento. Deve corresponder ao nome da tabela de dados.

column_name

Sim

Nome da coluna. Os nomes das colunas em SQL devem corresponder aos nomes das colunas na tabela de dados (sem distinção entre maiúsculas e minúsculas). Por exemplo, se a coluna da tabela de dados for Aa, use Aa, AA, aA ou aa.

data_type

Sim

Tipo de dados SQL da coluna. Deve corresponder ao tipo da coluna na tabela de dados. Colunas de chave primária aceitam apenas BIGINT, VARCHAR(1024) e VARBINARY(1024). Colunas de atributo também aceitam DOUBLE, BOOL, MEDIUMTEXT e MEDIUMBLOB. Para obter o mapeamento completo de tipos, consulte Mapeamentos de tipos de dados em SQL.

NOT NULL \

NULL

Não

Define se a coluna aceita valores NULL. Colunas de chave primária assumem NOT NULL como padrão. Colunas de atributo assumem NULL como padrão. Especifique NOT NULL para colunas de atributo que exigem valor obrigatório.

PRIMARY KEY

Sim

Definição da chave primária. A chave primária deve corresponder às colunas de chave primária da tabela de dados em ordem e tipo.

ENGINE

Não

Tipo de mecanismo de execução. O padrão é tablestore, o que significa que o mecanismo SQL seleciona automaticamente um índice.

consistency

Não

Nível de consistência dos resultados da consulta. Valores válidos: strong (consistência forte) e eventual (consistência eventual, padrão). Quando definido como strong, o mecanismo SQL não seleciona índices de pesquisa, pois eles oferecem apenas consistência eventual.

allow_inaccurate_aggregation

Não

Define se a precisão da agregação pode ser trocada por desempenho de consulta. O padrão é true. Quando definido como false, o mecanismo SQL não seleciona índices de pesquisa para agregação. Para tabelas de mapeamento de índice de pesquisa, este parâmetro é fixo em true.

Exemplos

Crie um mapeamento para exampletable com colunas de chave primária colvalue (VARCHAR) e id (BIGINT), além de uma coluna de atributo content (MEDIUMTEXT):

CREATE TABLE exampletable(colvalue VARCHAR(1024), id BIGINT, content MEDIUMTEXT, PRIMARY KEY(colvalue, id)) ENGINE='tablestore';

Crie um mapeamento com consistência forte:

CREATE TABLE exampletable2(id BIGINT(20), colvalue VARCHAR(1024), content MEDIUMTEXT, PRIMARY KEY(colvalue, id)) ENGINE_ATTRIBUTE='{"consistency": "strong"}';

Criar um mapeamento de índice de pesquisa

Para criar um mapeamento para um índice de pesquisa existente, use uma instrução CREATE TABLE com ENGINE='searchindex'. Após a criação do mapeamento, o mecanismo SQL executa todas as consultas usando o índice de pesquisa especificado.

Casos de uso

  • Necessidade de recursos de índice de pesquisa, como pesquisa de texto completo, pesquisa vetorial ou consultas de tipo aninhado.

  • Requisito de fixar o roteamento de consultas em um índice de pesquisa específico, em vez de depender da seleção automática de índice pelo mecanismo SQL.

Sintaxe

CREATE TABLE [IF NOT EXISTS] user_defined_name(
  column_name data_type [, column_name data_type]
)
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name": index_name, "table_name": table_name}';

Parâmetros

Parâmetro

Obrigatório

Descrição

IF NOT EXISTS

Não

Se especificado, o sistema não retorna erro quando a tabela de mapeamento já existe.

user_defined_name

Sim

Nome personalizado da tabela de mapeamento. Não precisa corresponder ao nome da tabela de dados ou do índice.

column_name

Sim

Nome da coluna. Definições de chave primária não são necessárias. Tabelas de mapeamento de índice de pesquisa não aceitam o tipo VARCHAR. Use MEDIUMTEXT para colunas de string.

index_name

Sim

Nome do índice de pesquisa. Especificado em ENGINE_ATTRIBUTE. O índice já deve existir.

table_name

Sim

Nome da tabela de dados à qual o índice de pesquisa pertence. Especificado em ENGINE_ATTRIBUTE.

Exemplos

Crie uma tabela de mapeamento search_exampletable1 para o índice de pesquisa exampletable1_index na tabela de dados exampletable1:

CREATE TABLE search_exampletable1(id BIGINT, colvalue MEDIUMTEXT, content MEDIUMTEXT) ENGINE='searchindex' ENGINE_ATTRIBUTE='{"index_name": "exampletable1_index", "table_name": "exampletable1"}';

Use IF NOT EXISTS para evitar erros quando o mapeamento já existir:

CREATE TABLE IF NOT EXISTS search_exampletable1(id BIGINT, colvalue MEDIUMTEXT, content MEDIUMTEXT) ENGINE='searchindex' ENGINE_ATTRIBUTE='{"index_name": "exampletable1_index", "table_name": "exampletable1"}';

Atualizar colunas da tabela de mapeamento

A instrução ALTER TABLE adiciona ou remove colunas de atributo em uma tabela de mapeamento existente.

Nota
  • Apenas tabelas de mapeamento criadas com uma instrução CREATE TABLE aceitam ALTER TABLE. Tabelas de mapeamento vinculadas automaticamente por DESCRIBE ou outras instruções não aceitam esta operação.

  • Cada instrução adiciona ou remove uma coluna. Para modificar várias colunas, execute a instrução múltiplas vezes.

  • ALTER TABLE atualiza apenas o esquema da tabela de mapeamento e não afeta a estrutura de armazenamento da tabela de dados.

  • Não é possível adicionar ou remover colunas de chave primária.

  • Após a execução desta instrução, o mecanismo SQL faz uma atualização assíncrona que leva até 30 segundos para ser concluída. Consultas realizadas durante a atualização podem não retornar a nova coluna.

Sintaxe

ALTER TABLE table_name option column_name [data_type];

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name

Sim

Nome da tabela de mapeamento.

option

Sim

Tipo de operação: ADD COLUMN para adicionar uma coluna de atributo ou DROP COLUMN para remover uma coluna de atributo.

column_name

Sim

Nome da coluna. Ao adicionar uma coluna, o nome não pode duplicar um nome de coluna existente. As regras de maiúsculas e minúsculas para nomes de colunas são as mesmas de CREATE TABLE.

data_type

Apenas para ADD COLUMN

Tipo de dados SQL da coluna. O tipo de dados deve corresponder à coluna correspondente na tabela de dados. Não necessário para DROP COLUMN.

Exemplos

Adicione colunas de atributo a uma tabela de mapeamento:

ALTER TABLE exampletable ADD COLUMN colvalue BIGINT;
ALTER TABLE exampletable ADD COLUMN content MEDIUMTEXT;

Remova uma coluna de atributo de uma tabela de mapeamento:

ALTER TABLE exampletable DROP COLUMN colvalue;

Remover um mapeamento

A instrução DROP MAPPING TABLE remove uma ou mais tabelas de mapeamento.

Nota

Esta instrução remove apenas o mapeamento SQL. A tabela de dados subjacente e seus dados permanecem inalterados.

Sintaxe

DROP MAPPING TABLE [IF EXISTS] table_name, ...;

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name

Sim

Nome da tabela de mapeamento. Separe vários nomes com vírgulas (,).

IF EXISTS

Não

Se especificado, o sistema não retorna erro quando o mapeamento não existe. Caso contrário, ocorre o erro Unknown mapping table.

Exemplos

DROP MAPPING TABLE IF EXISTS exampletable;

Visualizar detalhes da tabela

A instrução DESCRIBE retorna os nomes dos campos, tipos de dados, aceitação de valores nulos e sinalizadores de chave primária de uma tabela de mapeamento.

Sintaxe

DESCRIBE table_name;

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name

Sim

Nome da tabela de mapeamento.

Exemplos

Visualize os detalhes da tabela de mapeamento exampletable:

DESCRIBE exampletable;

A saída contém as seguintes colunas:

Coluna

Exemplo

Descrição

Field

pk1

Nome do campo.

Type

varchar(1024)

Tipo de dados SQL do campo.

Null

NO

Indica se o campo aceita valores NULL. NO para colunas de chave primária. YES para colunas de atributo.

Key

PRI

Sinalizador de chave primária. PRI indica uma coluna de chave primária. Um valor vazio indica uma coluna de atributo.

Visualizar detalhes do índice

A instrução SHOW INDEX retorna os índices associados a uma tabela de mapeamento, incluindo índices de chave primária, secundários e de pesquisa.

Sintaxe

SHOW INDEX {FROM | IN} table_name;

Parâmetros

Parâmetro

Obrigatório

Descrição

table_name

Sim

Nome da tabela de mapeamento. FROM e IN são intercambiáveis.

Exemplos

Visualize os índices de um mapeamento de tabela de dados (retorna índices de chave primária, secundários e de pesquisa):

SHOW INDEX IN exampletable;

A coluna Index_type indica o tipo de índice: um valor vazio para um índice de chave primária, GlobalIndex para um índice secundário e SearchIndex para um índice de pesquisa.

Visualize os índices de um mapeamento de índice de pesquisa:

SHOW INDEX IN search_exampletable1;

Para tabelas de mapeamento de índice de pesquisa, SHOW INDEX retorna _system_hidden_pk_field como o índice de chave primária (uma chave primária oculta gerada pelo sistema). Cada coluna também mostra um valor Search_type como LONG, KEYWORD ou TEXT.

Visualizar tabelas de mapeamento

SHOW TABLES lista todas as tabelas de mapeamento na instância atual.

Sintaxe

SHOW TABLES;

Saída de exemplo:

+------------------------+
| Tables_in_myinstance   |
+------------------------+
| exampletable           |
+------------------------+
| search_exampletable1   |
+------------------------+

Erros comuns

Os seguintes erros podem ocorrer quando uma instrução DDL falha.

Mensagem de erro

Instrução

Causa e solução

Table 'instance.table' doesn't exist

CREATE TABLE

A tabela de dados não existe. CREATE TABLE cria mapeamentos apenas para tabelas de dados ou índices de pesquisa existentes. Certifique-se de criar a tabela de dados primeiro.

Table 'instance.table' already exists

CREATE TABLE

O mapeamento já existe. Para suprimir este erro, use IF NOT EXISTS. Para recriar o mapeamento, execute DROP MAPPING TABLE primeiro.

Unknown mapping table 'instance.table'

DROP MAPPING TABLE

O mapeamento não existe. Para suprimir este erro, use IF EXISTS.

Unsupported alter non-mapping table

ALTER TABLE

A tabela de destino não é uma tabela de mapeamento criada com CREATE TABLE. Pode ser uma tabela de mapeamento vinculada automaticamente, que não aceita ALTER TABLE.