Todos los productos
Search
Centro de documentos

Tablestore:DDL operations

Última actualización: Sep 03, 2026

Las operaciones DDL de Tablestore crean asignaciones SQL para tablas de datos o índices de búsqueda existentes y gestionan el esquema y los metadatos de las tablas de asignación.

Descripción general de las sentencias DDL

Sentencia

Motor

Descripción

CREATE TABLE

tablestore

Crea una asignación para una tabla de datos. El motor SQL selecciona automáticamente el índice óptimo para las consultas.

CREATE TABLE

searchindex

Crea una asignación para un índice de búsqueda. El motor SQL ejecuta las consultas a través del índice de búsqueda especificado.

ALTER TABLE

-

Agrega o elimina columnas de atributos en una tabla de asignación existente.

DROP MAPPING TABLE

-

Elimina una asignación sin afectar la tabla de datos o el índice subyacente.

DESCRIBE

-

Devuelve los nombres de campo, tipos de datos, indicadores de clave principal y nulabilidad de una tabla de asignación.

SHOW INDEX

-

Devuelve la información de índices asociada a una tabla de asignación, incluidas las claves principales, los índices secundarios y los índices de búsqueda.

SHOW TABLES

-

Enumera todas las tablas de asignación en la instancia actual.

Nota

A diferencia de las bases de datos relacionales tradicionales, CREATE TABLE en Tablestore no crea una tabla física. En su lugar, genera una asignación de acceso SQL para una tabla de datos o un índice de búsqueda existente. DROP MAPPING TABLE solo elimina la asignación y deja intactos los datos subyacentes.

Crear una asignación de tabla de datos

Una sentencia CREATE TABLE con ENGINE='tablestore' crea una asignación para una tabla de datos existente. Una vez creada la asignación, el motor SQL selecciona automáticamente el índice óptimo (clave principal, índice secundario o índice de búsqueda) para ejecutar las consultas.

Sintaxis

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 tablas con una sola columna de clave principal, especifique PRIMARY KEY directamente en la definición de la columna:

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

Obligatorio

Descripción

IF NOT EXISTS

No

Si se especifica, no se devuelve ningún error cuando la tabla de asignación ya existe. Si no se especifica, se devuelve un error Table already exists.

table_name

Sí

Nombre de la tabla de asignación. Este nombre debe coincidir con el nombre de la tabla de datos.

column_name

Sí

Nombre de la columna. Los nombres de columna en SQL deben coincidir con los nombres de columna de la tabla de datos (sin distinción entre mayúsculas y minúsculas). Por ejemplo, si la columna de la tabla de datos es Aa, puede usar Aa, AA, aA o aa.

data_type

Sí

Tipo de datos SQL de la columna. El tipo de datos debe coincidir con el tipo de datos de la columna en la tabla de datos. Las columnas de clave principal solo admiten BIGINT, VARCHAR(1024) y VARBINARY(1024). Las columnas de atributos también admiten DOUBLE, BOOL, MEDIUMTEXT y MEDIUMBLOB. Para consultar la asignación completa de tipos, consulte Data type mappings in SQL.

NOT NULL

NULL

No

Indica si la columna permite valores NULL. Las columnas de clave principal tienen NOT NULL como valor predeterminado. Las columnas de atributos tienen NULL como valor predeterminado. Especifique NOT NULL para las columnas de atributos que deben tener un valor.

PRIMARY KEY

Sí

Definición de la clave principal. La clave principal debe coincidir con las columnas de clave principal de la tabla de datos en orden y tipo.

ENGINE

No

Tipo de motor de ejecución. El valor predeterminado es tablestore, lo que significa que el motor SQL selecciona automáticamente un índice.

consistency

No

Nivel de consistencia de los resultados de la consulta. Valores válidos: strong (consistencia fuerte) y eventual (consistencia eventual, predeterminado). Cuando se establece en strong, el motor SQL no selecciona índices de búsqueda porque estos solo ofrecen consistencia eventual.

allow_inaccurate_aggregation

No

Indica si se sacrifica la precisión de la agregación para mejorar el rendimiento de la consulta. El valor predeterminado es true. Cuando se establece en false, el motor SQL no selecciona índices de búsqueda para la agregación. Para las tablas de asignación de índices de búsqueda, este parámetro está fijo en true.

Ejemplos

Cree una asignación para exampletable con columnas de clave principal colvalue (VARCHAR) e id (BIGINT), y una columna de atributo content (MEDIUMTEXT):

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

Cree una asignación con consistencia fuerte:

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

Crear una asignación de índice de búsqueda

Para crear una asignación para un índice de búsqueda existente, utilice una sentencia CREATE TABLE con ENGINE='searchindex'. Una vez creada la asignación, el motor SQL ejecuta todas las consultas a través del índice de búsqueda especificado.

Casos de uso

  • Se requieren capacidades de índice de búsqueda como búsqueda de texto completo, búsqueda vectorial o consultas de tipo anidado.

  • El enrutamiento de consultas debe fijarse a un índice de búsqueda específico en lugar de depender de la selección automática de índices por parte del motor SQL.

Sintaxis

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

Obligatorio

Descripción

IF NOT EXISTS

No

Si se especifica, no se devuelve ningún error cuando la tabla de asignación ya existe.

user_defined_name

Sí

Nombre personalizado para la tabla de asignación. El nombre no necesita coincidir con el nombre de la tabla de datos o del índice.

column_name

Sí

Nombre de la columna. No se requieren definiciones de clave principal. Las tablas de asignación de índices de búsqueda no admiten el tipo VARCHAR. Utilice MEDIUMTEXT para columnas de cadena.

index_name

Sí

Nombre del índice de búsqueda. Se especifica en ENGINE_ATTRIBUTE. El índice debe existir previamente.

table_name

Sí

Nombre de la tabla de datos a la que pertenece el índice de búsqueda. Se especifica en ENGINE_ATTRIBUTE.

Ejemplos

Cree una tabla de asignación search_exampletable1 para el índice de búsqueda exampletable1_index en la tabla de datos exampletable1:

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

Utilice IF NOT EXISTS para evitar errores cuando la asignación ya existe:

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

Actualizar columnas de la tabla de asignación

La sentencia ALTER TABLE agrega o elimina columnas de atributos en una tabla de asignación existente.

Nota
  • Solo las tablas de asignación creadas con una sentencia CREATE TABLE admiten ALTER TABLE. Las tablas de asignación vinculadas automáticamente mediante DESCRIBE u otras sentencias no admiten esta operación.

  • Cada sentencia agrega o elimina una columna. Para modificar varias columnas, ejecute la sentencia varias veces.

  • ALTER TABLE solo actualiza el esquema de la tabla de asignación y no afecta la estructura de almacenamiento de la tabla de datos.

  • No se pueden agregar ni eliminar columnas de clave principal.

  • Después de ejecutar esta sentencia, el motor SQL se actualiza de forma asíncrona y tarda hasta 30 segundos en completar el proceso. Es posible que las consultas realizadas durante la actualización no devuelvan la nueva columna.

Sintaxis

ALTER TABLE table_name option column_name [data_type];

Parámetros

Parámetro

Obligatorio

Descripción

table_name

Sí

Nombre de la tabla de asignación.

option

Sí

Tipo de operación: ADD COLUMN para agregar una columna de atributo, o DROP COLUMN para eliminar una columna de atributo.

column_name

Sí

Nombre de la columna. Al agregar una columna, el nombre no debe duplicar uno existente. Las reglas de mayúsculas y minúsculas para los nombres de columna son las mismas que para CREATE TABLE.

data_type

Solo para ADD COLUMN

Tipo de datos SQL de la columna. El tipo de datos debe coincidir con la columna correspondiente en la tabla de datos. No es necesario para DROP COLUMN.

Ejemplos

Agregue columnas de atributos a una tabla de asignación:

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

Elimine una columna de atributo de una tabla de asignación:

ALTER TABLE exampletable DROP COLUMN colvalue;

Eliminar una asignación

La sentencia DROP MAPPING TABLE elimina una o más tablas de asignación.

Nota

Esta sentencia solo elimina la asignación SQL. La tabla de datos subyacente y sus datos no se ven afectados.

Sintaxis

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

Parámetros

Parámetro

Obligatorio

Descripción

table_name

Sí

Nombre de la tabla de asignación. Separe varios nombres con comas (,).

IF EXISTS

No

Si se especifica, no se devuelve ningún error cuando la asignación no existe. Si no se especifica, se devuelve un error Unknown mapping table.

Ejemplos

DROP MAPPING TABLE IF EXISTS exampletable;

Consultar detalles de la tabla

La sentencia DESCRIBE devuelve los nombres de campo, tipos de datos, nulabilidad e indicadores de clave principal de una tabla de asignación.

Sintaxis

DESCRIBE table_name;

Parámetros

Parámetro

Obligatorio

Descripción

table_name

Sí

Nombre de la tabla de asignación.

Ejemplos

Consulte los detalles de la tabla de asignación exampletable:

DESCRIBE exampletable;

La salida contiene las siguientes columnas:

Columna

Ejemplo

Descripción

Field

pk1

Nombre del campo.

Type

varchar(1024)

Tipo de datos SQL del campo.

Null

NO

Indica si el campo permite valores NULL. NO para columnas de clave principal. YES para columnas de atributos.

Key

PRI

Indicador de clave principal. PRI indica una columna de clave principal. Un valor vacío indica una columna de atributo.

Consultar detalles del índice

La sentencia SHOW INDEX devuelve los índices asociados a una tabla de asignación, incluidas las claves principales, los índices secundarios y los índices de búsqueda.

Sintaxis

SHOW INDEX {FROM | IN} table_name;

Parámetros

Parámetro

Obligatorio

Descripción

table_name

Sí

Nombre de la tabla de asignación. FROM y IN son intercambiables.

Ejemplos

Consulte los índices de una asignación de tabla de datos (devuelve claves principales, índices secundarios e índices de búsqueda):

SHOW INDEX IN exampletable;

La columna Index_type indica el tipo de índice: un valor vacío corresponde a un índice de clave principal, GlobalIndex a un índice secundario y SearchIndex a un índice de búsqueda.

Consulte los índices de una asignación de índice de búsqueda:

SHOW INDEX IN search_exampletable1;

Para las tablas de asignación de índices de búsqueda, SHOW INDEX devuelve _system_hidden_pk_field como índice de clave principal (una clave principal oculta generada por el sistema). Cada columna también muestra un valor Search_type como LONG, KEYWORD o TEXT.

Consultar tablas de asignación

SHOW TABLES enumera todas las tablas de asignación en la instancia actual.

Sintaxis

SHOW TABLES;

Salida de ejemplo:

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

Errores comunes

Los siguientes errores pueden ocurrir cuando falla una sentencia DDL.

Mensaje de error

Sentencia

Causa y solución

Table 'instance.table' doesn't exist

CREATE TABLE

La tabla de datos no existe. CREATE TABLE solo crea asignaciones para tablas de datos o índices de búsqueda existentes. Asegúrese de crear primero la tabla de datos.

Table 'instance.table' already exists

CREATE TABLE

La asignación ya existe. Para suprimir este error, utilice IF NOT EXISTS. Para volver a crear la asignación, ejecute primero DROP MAPPING TABLE.

Unknown mapping table 'instance.table'

DROP MAPPING TABLE

La asignación no existe. Para suprimir este error, utilice IF EXISTS.

Unsupported alter non-mapping table

ALTER TABLE

La tabla destino no es una tabla de asignación creada con CREATE TABLE. Podría ser una tabla de asignación vinculada automáticamente, la cual no admite ALTER TABLE.