Todos los productos
Search
Centro de documentos

:CREATE TABLE

Última actualización: Sep 05, 2026

Este tema describe la sintaxis que se utiliza para crear una tabla compatible con tipos de datos geométricos.

Sintaxis

create_table_statement ::=  CREATE TABLE [ IF NOT EXISTS ] table_name
                            '('
                                column_definition
                                ( ',' column_definition )*
                                 ',' [constraint pk]  PRIMARY KEY '(' primary_key ')' 
                            ')' WITH [ table_options ]
column_definition      ::=  column_name lql_type 
primary_key            ::=  primary_item [ ',' primary_item ]
primary_item           ::=  column_name (ASC|DESC)
                            | [z-order] '(' [ column_name ( ',' column_name )* ] ')'
Nota

Esta sintaxis es compatible con IF NOT EXISTS. Especifique una o más columnas como clave principal.

Uso

Nombre de la tabla (table_identifier)

El nombre de la tabla debe cumplir los siguientes requisitos:

  • El nombre puede contener dígitos, letras mayúsculas, letras minúsculas, puntos (.), guiones (-) y guiones bajos (_).

  • El nombre no puede comenzar con un punto (.) ni con un guion (-).

  • La longitud del nombre debe ser de 1 a 255 caracteres.

Definición de columna (column_definition)

Sintaxis

Obligatorio

Descripción

nombre de columna (column_identifier)

Sí

  • El nombre puede contener dígitos, letras mayúsculas, letras minúsculas, puntos (.), guiones (-) y guiones bajos (_).

  • No utilice palabras clave reservadas del sistema como nombres de columna.

  • La longitud del nombre no puede superar los 255 bytes.

tipo de dato (data_type)

Sí

Para obtener más información sobre los tipos de datos compatibles, consulte Data types.

Importante

Cuando cree una tabla de series temporales, tenga en cuenta lo siguiente si utiliza el tipo de dato TIMESTAMP:

  • Solo especifique una columna TIMESTAMP.

  • LindormTSDB codifica y analiza las marcas de tiempo según la hora estándar de China (UTC+8).

  • Algunos sistemas heredados procesan marcas de tiempo UNIX de 32 bits. Antes de escribir estas marcas de tiempo en LindormTSDB, multiplíquelas por 1000 para evitar discrepancias semánticas. Por ejemplo, un sistema heredado interpreta la marca de tiempo 1641009600 como 2022-01-01 12:00:00, pero LindormTSDB la interpreta como 1970-01-20 07:50:09 (UTC+8) .

Restricción NULL

No

Indica si la columna admite valores NULL.

Importante

Lindorm SQL no valida esta restricción; el motor de almacenamiento se encarga de ello.

La validación de la restricción NULL depende de las reglas del motor de almacenamiento, las cuales varían. Por lo tanto, podría escribir valores NULL en una columna aunque esté definida con NOT NULL.

Asegúrese de que los datos se escriban correctamente mediante los siguientes lineamientos:

  • Una columna de clave principal no puede ser NULL. Especifique NOT NULL para todas las columnas de clave principal al crear una tabla.

  • No especifique NOT NULL para las columnas que no formen parte de la clave principal.

Clave principal (primary_key)

La clave principal identifica de forma única los datos de una tabla y consta de una o más columnas. Debe especificar una clave principal (PRIMARY KEY) al crear una tabla.

Importante

La clave principal no se puede modificar después de su creación. Diseñe la clave principal con cuidado.

Tenga en cuenta lo siguiente cuando ejecute la instrucción CREATE TABLE para crear una tabla:

Tipo de motor

Descripción

LindormTable

  • La longitud máxima de una sola columna de clave principal es de 2 KB.

  • La longitud total de todas las columnas de clave principal no puede superar los 30 KB.

  • La longitud máxima de una sola columna que no forme parte de la clave principal no puede superar los 2 MB.

LindormTSDB

  • En la clave principal de una tabla de series temporales, una columna VARCHAR se denomina columna TAG y una columna TIMESTAMP se denomina columna de marca de tiempo.

  • Las columnas de clave principal deben ser del tipo de dato VARCHAR o TIMESTAMP.

  • La clave principal puede contener una o más columnas VARCHAR, pero solo una columna TIMESTAMP.

  • Utilice un identificador único de la fuente de datos como clave principal de una tabla de series temporales. Algunos ejemplos son los identificadores de dispositivos en escenarios de IoT, los números de identificación vehicular (VIN) en escenarios de Internet de vehículos (IoV) y los identificadores de aplicaciones o las cadenas ip:port en escenarios de monitoreo. Para obtener más información, consulte Best practices for designing a PRIMARY KEY.

Expresión de índice (KEY|INDEX)

Utilice la palabra clave KEY o INDEX en una instrucción CREATE TABLE para crear un índice junto con la tabla.

Importante
  • La expresión de índice (KEY|INDEX) solo es compatible con LindormTable 2.7.7 y versiones posteriores, así como con Lindorm SQL 2.8.6.0 y versiones posteriores.

  • Para comprobar las versiones de LindormTable y Lindorm SQL, consulte LindormTable release notes y SQL version notes. Si no logra actualizar a las versiones requeridas desde la consola, comuníquese con el soporte técnico de Lindorm. El identificador de DingTalk es s0s3eg3.

Uso

  • Si no especifica explícitamente un nombre de índice, el sistema genera uno de forma predeterminada. El formato del nombre de índice generado es TableName_idx_${auto-incremented ID}.

  • Actualmente, con una expresión de índice solo se crean secondary indexes and search indexes.

  • Inclusión predeterminada de columnas para índices secundarios:

    Lindorm SQL 2.9.3.10 y versiones posteriores

    Si no especifica una cláusula INCLUDE al crear un índice secundario, el resto de las columnas no se incluyen en el índice de forma predeterminada.

    Versiones de Lindorm SQL anteriores a la 2.9.3.10

    Si no especifica una cláusula INCLUDE al crear un índice secundario, el resto de las columnas se incluyen en el índice de forma predeterminada.

    Nota

    Esto equivale a establecer el atributo de índice INDEX_COVERED_TYPE en COVERED_ALL_COLUMNS_IN_SCHEMA. Si la tabla es dinámica, equivale a establecer el atributo en COVERED_DYNAMIC_COLUMNS.

  • Si especifica una cláusula KEY o INDEX al crear una tabla, pero no especifica explícitamente los atributos MUTABILITY y CONSISTENCY, la tabla se crea con los siguientes atributos predeterminados: CONSISTENCY = 'strong' y MUTABILITY='MUTABLE_LATEST'.

  • Si la instrucción CREATE TABLE incluye una expresión de índice, el sistema primero crea la tabla y luego el índice. Si ocurre una excepción durante la creación del índice, es posible que ambos permanezcan sin eliminarse automáticamente. Consulte instrucciones como SHOW y DESCRIBE para verlos, aunque quizá no logre escribir datos en ellos ni consultarlos. Se recomienda eliminar la tabla y el índice restantes para volver a crearlos.

Partición (partition_definition)

Solo LindormTSDB es compatible con particiones. En una tabla de series temporales, la columna utilizada en la cláusula PARTITION BY debe ser una columna de clave principal VARCHAR.

Utilice PARTITION BY HASH(column1, column2, ..., columnN) para especificar una o más columnas para la partición hash. Por ejemplo: PARTITION BY HASH(c1, p1).

Atributos de tabla (table_options)

Solo LindormTable es compatible con los atributos de tabla. Utilice la palabra clave WITH para agregar los siguientes atributos de tabla:

Opción

Tipo

Descripción

COMPRESSION

STRING

El algoritmo de compresión de la tabla. Valores válidos:

  • SNAPPY

  • ZSTD

  • LZ4

Nota

En las versiones de LindormTable anteriores a la 2.3.4, no se especifica ningún algoritmo de compresión de forma predeterminada. En LindormTable 2.3.4 y versiones posteriores, se utiliza el algoritmo ZSTD de forma predeterminada.

TTL

INT

El tiempo de vida (TTL) de los datos, en segundos (s).

Nota
  • De forma predeterminada, este atributo no está configurado, lo que significa que los datos no caducan.

  • Agregue TTL=<time> a la instrucción para establecer un TTL para la tabla, o establezca TTL como una cadena vacía para quitarlo. Para ver ejemplos de uso, consulte Examples.

COMPACTION_MAJOR_PERIOD

LONG

El intervalo con el que el sistema ejecuta una major compaction, en milisegundos (ms). Para ver ejemplos de uso, consulte Specify the major compaction interval.

Nota

Valor predeterminado: Math.Min(TTL, 1,728,000,000 ms). Si no establece un TTL, el valor predeterminado es de 20 días (20 × 24 × 60 × 60 × 1,000 = 1,728,000,000 ms).

MUTABILITY

STRING

El modo de escritura de la tabla base. Este atributo afecta el comportamiento de indexación. Valor predeterminado: MUTABLE_LATEST.

Valores válidos:

  • IMMUTABLE

  • IMMUTABLE_ROWS

  • MUTABLE_LATEST

  • MUTABLE_ALL

  • MUTABLE_UDT

Para obtener más información sobre los valores, consulte High-performance native secondary indexes.

Importante

Una vez creado un índice, no modifique el atributo MUTABILITY. Para cambiar este atributo, primero elimine todos los índices de la tabla. Cree una copia de seguridad de los datos antes de ejecutar esta operación para evitar pérdidas de información.

CONSISTENCY

STRING

El nivel de consistencia de la tabla. En instancias entre zonas, especifica la consistencia de los datos entre las réplicas principales y secundarias. Valores válidos:

  • eventual: nivel de consistencia eventual. Este es el valor predeterminado para las tablas creadas sin una expresión de índice.

  • strong: nivel de consistencia fuerte.

Importante

En instancias entre zonas, si su carga de trabajo implica operaciones de lectura-modificación-escritura (como incremento, anexión o actualizaciones de índices), establezca el atributo CONSISTENCY de la tabla principal en strong para garantizar la consistencia de los datos entre las réplicas.

NUMREGIONS

INT

El número de regiones predivididas de la tabla.

CHS

INT

El límite que separa los datos calientes de los fríos, en segundos.

Nota
  • Para establecer este límite, habilite la función de almacenamiento en frío. Para consultar la descripción general y las instrucciones de habilitación, consulte Hot and cold data separation.

  • Cuando configure este atributo, también debe configurar CHS_L2='storagetype=COLD'.

STARTKEY y ENDKEY

El mismo tipo de dato que la primera columna de la clave principal.

La clave inicial y final para predividir las regiones de la tabla.

Nota
  • Si especifica STARTKEY y ENDKEY, también debe especificar NUMREGIONS. Si especifica STARTKEY y ENDKEY sin NUMREGIONS, estos se ignoran.

  • Los valores literales de cadena especificados para STARTKEY y ENDKEY se convierten implícitamente al tipo de dato de la primera columna de la clave principal. Luego se utilizan como claves inicial y final de las particiones. Esta función solo es compatible con los siguientes tipos de datos:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITKEYS

El mismo tipo de dato que la primera columna de la clave principal.

Las claves iniciales de todas las regiones predivididas de la tabla.

Nota
  • El atributo SPLITKEYS es compatible con LindormTable 2.5.4 y versiones posteriores.

  • En un valor SPLITKEYS basado en cadenas, utilice comas (,) para separar las claves iniciales de las regiones predivididas. Las comas encerradas entre comillas dobles ("") se tratan como caracteres normales.

  • El atributo SPLITKEYS no se puede utilizar junto con los atributos NUMREGIONS, STARTKEY ni ENDKEY.

  • Al igual que con STARTKEY y ENDKEY, los valores literales de cadena especificados se convierten implícitamente al tipo de dato de la primera columna de la clave principal. Después se utilizan como claves iniciales de las particiones. Esta función solo es compatible con los siguientes tipos de datos:

    • SMALLINT

    • INTEGER

    • BIGINT

    • CHAR

    • VARCHAR

    • FLOAT

    • DOUBLE

SPLITALGO

STRING

Define el algoritmo de división para la partición previa. Los algoritmos compatibles son:

  • HexStringSplit: divide la clave principal según los bytes hexadecimales.

  • UniformSplit: divide uniformemente la clave principal según los valores de byte originales.

DYNAMIC_COLUMNS

STRING

Indica si se habilitan las columnas dinámicas. Valores válidos:

  • True: habilita las columnas dinámicas.

  • False: deshabilita las columnas dinámicas. Este es el valor predeterminado.

Nota

Dynamic columns solo admiten el tipo de dato Varbinary. Para obtener más información sobre las columnas dinámicas, consulte Dynamic columns.

VERSIONS

STRING

El número de versiones que se conservan para cada valor de columna. Debe ser un entero mayor o igual que 1. Valor predeterminado: 1. Para obtener más información sobre el control de versiones de datos, consulte Data versioning.

Importante

Un valor alto para el atributo VERSIONS puede degradar el rendimiento de consulta y almacenamiento. Se recomienda establecer este valor en 1.

BLOB_BUCKET_NAME

STRING

El nombre del bucket para las columnas BLOB de la tabla.

El nombre del bucket debe cumplir las siguientes reglas:

  • Solo puede contener letras minúsculas, dígitos, puntos (.) y guiones (-).

  • Su longitud debe ser de 3 a 63 caracteres.

  • No puede comenzar ni terminar con un guion (-).

  • No puede contener puntos (.) consecutivos.

Nota
  • El atributo BLOB_BUCKET_NAME es compatible con LindormTable 2.6.4 y versiones posteriores.

  • Si no especifica una columna BLOB al crear una tabla, pero configura el atributo BLOB_BUCKET_NAME, el sistema no comprueba la validez del nombre del bucket.

Nota

Las versiones de LindormTable anteriores a la 2.2.16 no admiten la palabra clave WITH para configurar atributos de tabla. Encierre la palabra clave del atributo entre comillas simples ('). Los valores de los atributos se configuran según su tipo de dato; por ejemplo, los valores STRING deben ir entre comillas simples ('). Ejemplo: CREATE TABLE IF NOT EXISTS t1(c1 varchar, c2 bigint, c3 int, c4 int, PRIMARY KEY(c1,c2)) 'CONSISTENCY'='strong';.

Ejemplos

  • Ejecute la siguiente instrucción para crear una tabla compatible con todos los tipos de datos geométricos:

    CREATE TABLE geoms(gid INT, g GEOMETRY, PRIMARY KEY(gid));

    Ejecute la siguiente instrucción para escribir distintos tipos de datos geométricos en la tabla:

    UPSERT INTO geoms(gid, g) VALUES(0,ST_GeomFromText('POINT(-10.1 3.3)')),(1,ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)')),(2,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • Ejecute la siguiente instrucción para crear una tabla que solo admita objetos de punto:

    CREATE TABLE pts(gid INT, g GEOMETRY(POINT), PRIMARY KEY(gid);

    Ejecute la siguiente instrucción para escribir objetos de punto en la tabla:

    UPSERT INTO pts(gid, g) VALUES(0, ST_MakePoint(0,0)),(1, ST_MakePoint(1,1));
  • Ejecute la siguiente instrucción para crear una tabla que solo admita objetos de polígono:

    CREATE TABLE polys(gid INT, g GEOMETRY(POLYGON), PRIMARY KEY(gid));

    Ejecute la siguiente instrucción para escribir un objeto de polígono en la tabla:

    UPSERT INTO polys(gid,g) VALUES(0,ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))'));
  • Ejecute la siguiente instrucción para crear una tabla que solo admita objetos LineString:

    CREATE TABLE lines(gid INT, g GEOMETRY(LINESTRING), PRIMARY KEY(gid));

    Ejecute la siguiente instrucción para escribir un objeto LineString en la tabla:

    UPSERT INTO lines(gid,g) VALUES(0, ST_GeomFromText('LINESTRING(-12.2 4.3, -10.2 4.3)'));
  • Ejecute la siguiente instrucción para crear una tabla que solo admita objetos MultiPoint:

    CREATE TABLE multipoints(gid INT, g GEOMETRY(MULTIPOINT), PRIMARY KEY(gid));

    Ejecute la siguiente instrucción para escribir un objeto MultiPoint en la tabla:

    UPSERT INTO multipoints(gid,g) VALUES(0, ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)'));
  • Ejecute la siguiente instrucción para crear una tabla que solo admita objetos MultiLineString:

    CREATE TABLE multilines(gid INT, g GEOMETRY(MULTILINESTRING), PRIMARY KEY(gid));

    Ejecute la siguiente instrucción para escribir un objeto MultiLineString en la tabla:

    UPSERT INTO multilines(gid,g) VALUES(0, ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))'));
  • Ejecute la siguiente instrucción para crear una tabla que solo admita objetos MultiPolygon:

    CREATE TABLE multipolys(gid INT, g GEOMETRY(MULTIPOLYGON), PRIMARY KEY(gid));

    Ejecute la siguiente instrucción para escribir un objeto MultiPolygon en la tabla:

    UPSERT INTO multipolys(gid,g) VALUES(0, ST_GeomFromText('MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))'));
  • Ejecute la siguiente instrucción para crear una tabla que solo admita objetos GeometryCollection:

    CREATE TABLE collections(gid INT, g GEOMETRY(GEOMETRYCOLLECTION), PRIMARY KEY(gid));

    Ejecute la siguiente instrucción para escribir un objeto GeometryCollection en la tabla:

    UPSERT INTO collections(gid,g) VALUES(0, ST_GeomFromText('GEOMETRYCOLLECTION (POINT (40 10), LINESTRING (10 10, 20 20, 10 40), POLYGON ((40 40, 20 45, 45 30, 40 40)))'));
  • Ejecute la siguiente instrucción para crear una tabla que contenga varias columnas con distintos datos geométricos:

    CREATE TABLE mix(gid INT, pt GEOMETRY(POINT), ply GEOMETRY(POLYGON), PRIMARY KEY(gid));