Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Lenguaje de definición de datos

Usa el lenguaje de definición de datos (DDL) de Cloud Spanner para realizar estas acciones:

  • Crear una base de datos
  • Crear, modificar o descartar tablas en una base de datos
  • Agregar, modificar o descartar columnas en una tabla
  • Crear o descartar índices en una base de datos

Sintaxis de DDL

statement:
    { create_database | alter_database | create_table | create_index | alter_table | drop_table | drop_index }

create_database:
    CREATE DATABASE database_id

alter_database:
    ALTER DATABASE database_id
    action

where action is:
    SET OPTIONS ( optimizer_version = { 1 ... 2 | null } )

create_table:
    CREATE TABLE ( [
       { column_name data_type [NOT NULL] [AS ( expression ) STORED] [ options_def ]
       | table_constraint }
       [, ... ]
    ] ) PRIMARY KEY ( [ column_name [ { ASC | DESC } ], ...] )
    [, INTERLEAVE IN PARENT table_name [ ON DELETE { CASCADE | NO ACTION } ] ]

    where data_type is:
        { scalar_type | array_type }

    and options_def is:
        { OPTIONS ( allow_commit_timestamp = { true | null } ) }

    and table_constraint is:
        [ CONSTRAINT constraint_name ]
        { CHECK ( expression ) |
          FOREIGN KEY ( column_name [, ... ] ) REFERENCES ref_table ( ref_column [, ... ] ) }

create_index:
    CREATE [ UNIQUE ] [ NULL_FILTERED ] INDEX index_name
    ON table_name ( key_part [, ...] ) [ storing_clause ] [ , interleave_clause ]

    where index_name is:
        {a—z|A—Z}[{a—z|A—Z|0—9|_}+]

    and key_part is:
        column_name [ { ASC | DESC } ]

    and storing_clause is:
        STORING ( column_name [, ...] )

    and interleave_clause is:
        INTERLEAVE IN table_name

alter_table:
    ALTER TABLE table_name
    action [, ... ]

    where action is:
        ADD [ COLUMN ] column_name data_type [ NOT NULL ] [AS ( expression ) STORED] [ options_def ]
        DROP [ COLUMN ] column_name
        ADD table_constraint
        DROP CONSTRAINT constraint_name
        SET ON DELETE { CASCADE | NO ACTION }
        ALTER [ COLUMN ] column_name { { data_type } [ NOT NULL ] | SET [ options_def ] }

    and data_type is:
        { scalar_type | array_type }

    and options_def is:
        { OPTIONS ( allow_commit_timestamp = { true | null } ) }

    and table_constraint is:
        [ CONSTRAINT constraint_name ]
        { CHECK ( expression ) |
          FOREIGN KEY ( column_name [, ... ] ) REFERENCES ref_table ( ref_column [, ... ] ) }

drop_table:
    DROP TABLE table_name

drop_index:
    DROP INDEX index_name

scalar_type:
    { BOOL | INT64 | FLOAT64 | NUMERIC | STRING( length ) | BYTES( length ) | DATE | TIMESTAMP }

length:
    { int64_value | MAX }

array_type:
    ARRAY< scalar_type >

int64_value:
    { decimal_value | hex_value }

decimal_value:
    [-]0—9+

hex_value:
    [-]0x{0—9|a—f|A—F}+

database_id:
    {a—z}[{a—z|0—9|_|-}+]{a—z|0—9}

table_name, column_name, index_name:
    {a—z|A—Z}[{a—z|A—Z|0—9|_}+]

Notación:

  • Los corchetes “[ ]” indican cláusulas opcionales.
  • Los paréntesis “( )” indican paréntesis literales.
  • La barra vertical “|” indica un OR lógico.
  • Las llaves “{ }” encierran un conjunto de opciones.
  • Una coma seguida de una elipsis indica que el elemento anterior puede repetirse en una lista separada por comas. item [, ...] indica uno o más elementos, y [item, ...] indica cero o más elementos.
  • Una coma “,” indica la coma literal.
  • Los corchetes angulares “<>” indican corchetes angulares literales.
  • Un guion largo “—” indica un rango de valores entre los elementos a cada lado.
  • El signo más “+” indica que el elemento anterior puede repetirse.

Palabras clave reservadas

Algunas palabras, como los nombres de tipos, están reservadas en el DDL de Cloud Spanner. Si necesitas usar una palabra clave reservada como un identificador en tu esquema, enciérrela entre acentos graves (`). Para obtener la lista completa de palabras clave reservadas en Cloud Spanner, consulta Estructura léxica y sintaxis.

Por ejemplo:

CREATE TABLE MyTable (
  RowId INT64 NOT NULL,
  `Int64` INT64
) PRIMARY KEY (RowId);

Convenciones de nombres

Las siguientes reglas se aplican a los nombres de tablas, columnas, índices y nombres de restricciones de claves externas.

  • Puede tener entre 1 y 128 caracteres.

  • Debe comenzar con una letra mayúscula o minúscula.

  • Puede contener letras mayúsculas y minúsculas, números y guiones bajos, pero no guiones.

  • No se pueden crear dos objetos de Cloud Spanner con el mismo nombre. Esto incluye nombres que difieren solo en el uso de mayúsculas. Por ejemplo, la segunda declaración en el siguiente fragmento falla porque los nombres de las tablas difieren solo por caso.

    CREATE TABLE MyTable (col1 INT64) PRIMARY KEY (col1);
    CREATE TABLE MYTABLE (col1 INT64) PRIMARY KEY (col1);
    
  • Cuando hagas referencia a otros objetos de esquema en una declaración DDL (por ejemplo, el nombre de una columna para una clave primaria, o los nombres de tabla y columna en un índice), asegúrate de usar el caso original para el nombre de cada entidad. Como ejemplo, considera la tabla Singers creada con la siguiente declaración.

    CREATE TABLE Singers (
      SingerId   INT64 NOT NULL,
      FirstName  STRING(1024),
      LastName   STRING(1024),
      SingerInfo BYTES(MAX),
      BirthDate  DATE,
    ) PRIMARY KEY(SingerId);
    

    El siguiente comando falla con el mensaje Table not found: singers porque usa mayúsculas diferentes para la tabla Singers.

    CREATE INDEX SingersByFirstLastName ON singers(FirstName, LastName)
    
  • Los nombres de los objetos de esquema de Cloud Spanner no distinguen entre mayúsculas y minúsculas en las consultas de SQL. Como ejemplo, considera la tabla MyTable2 creada con la siguiente declaración.

    CREATE TABLE MyTable2 (col1 INT64) PRIMARY KEY (col1);
    

    Las siguientes consultas se ejecutan correctamente porque los nombres de objeto de esquema no distinguen entre mayúsculas y minúsculas en las consultas.

    SELECT col1 FROM MyTable2 LIMIT 1
    SELECT COL1 FROM MYTABLE2 LIMIT 1
    SELECT COL1 FROM mytable2 LIMIT 1
    INSERT INTO MYTABLE2 (col1) VALUES(1)
    

Declaraciones DATABASE

CREATE DATABASE

Cuando creas una base de datos de Cloud Spanner, debes proporcionar una declaración CREATE DATABASE, que define el ID de la base de datos:

CREATE DATABASE database_id

where database_id
    {a—z}[{a—z|0—9|_|-}+]{a—z|0—9}

Parámetros

database_id

ALTER DATABASE

Cambia la definición de una tabla.

Sintaxis

ALTER DATABASE database_id
    action

where database_id is:
    {a—z}[{a—z|0—9|_|-}+]{a—z|0—9}

and action is:
    SET OPTIONS ( optimizer_version = { 1 ...  2 | null } )

Descripción

ALTER DATABASE cambia la definición de una base de datos existente.

SET OPTIONS

  • Usa esta cláusula para configurar una opción en el nivel de la base de datos de la jerarquía del esquema.

Parámetros

database_id

  • El nombre de la base de datos cuyos atributos deben modificarse. Si el nombre es una palabra reservada o contiene un guion, escríbelo entre acentos graves (`). Para obtener más información sobre las convenciones de nombres de bases de datos, consulta Convenciones de nombres en este documento.

options_def

  • La opción ( optimizer_version = { 1 ... 2 | null } ) te permite especificar la versión del optimizador de consultas que se usará. De manera predeterminada, esta es la última versión del optimizador, pero puede especificar cualquier versión disponible de este. Establecer esta opción en null equivale a establecerla en la última versión, que actualmente es 2. Para obtener más información, consulta Explorador de consultas.

Tipos de datos

Escalares

Esta es la sintaxis para usar un tipo escalar en DDL:

{ BOOL | INT64 | FLOAT64 | NUMERIC | STRING( length ) | BYTES( length ) | DATE | TIMESTAMP }

length:
    { int64_value | MAX }

int64_value:
    { decimal_value | hex_value }

decimal_value:
    [-]0—9+

hex_value:
    [-]0x{0—9|a—f|A—F}+

Un valor int64_value debe corresponder a un número entero de -9,223,372,036,854,775,808 (-263) a 9,223,372,036,854,775,807 (263 − 1). Se puede especificar con notación decimal o hexadecimal. El formato hexadecimal requiere un prefijo 0x, con una x en minúscula.

STRING

STRING es una string de caracteres Unicode de longitud variable. Su valor debe ser una string Unicode válida. La longitud es obligatoria y representa la cantidad máxima de caracteres Unicode (no bytes) que se pueden almacenar en el campo.

Notas:

  • Las operaciones de escrituras en la columna se validan y se rechazarán si el valor nuevo no es una string Unicode válida o superar la longitud especificada.

  • length puede ser un número entero en el rango [1, 2621440] (2.5 MB).

  • Puedes configurar length en el valor de conveniencia MAX, que es equivalente a 2621440 con fines de validación para un campo cuya longitud es impredecible o no necesita limitarse.

    Solo la longitud real de la string almacenada afecta los costos de almacenamiento. El uso de MAX no utiliza ninguna capacidad de almacenamiento adicional.

  • Cloud Spanner requiere que las strings Unicode estén codificadas en UTF-8 cuando se reciben en el servidor.

  • La intercalación se realiza mediante un valor numérico de caracteres Unicode (técnicamente por punto de código, que es sutilmente diferente debido a una combinación de caracteres). Para las string ASCII, este es el orden de clasificación tradicional.

  • Puedes reducir la longitud de una columna después de crearla, pero para ello, Cloud Spanner debe validar que los datos existentes estén dentro de la restricción de longitud.

BYTES

BYTES es una string binaria de longitud variable. La longitud es obligatoria y representa la cantidad máxima de bytes que se pueden almacenar en el campo.

Notas:

  • Las operaciones de escrituras en la columna se validan y se rechazan si el valor nuevo supera la longitud especificada.

  • length puede ser un número entero en el rango [1, 10485760] (10 MB) o el valor de conveniencia MAX, que es equivalente a 10485760 con fines de validación.

    Solo los bytes reales almacenados afectan los costos de almacenamiento. El uso de MAX no utiliza ninguna capacidad de almacenamiento adicional.

  • Puedes reducir la longitud de una columna después de crearla, pero para ello, Cloud Spanner debe validar que los datos existentes estén dentro de la restricción de longitud.

DATE

  • Es una fecha independiente de la zona horaria.
  • El rango [0001-01-01, 9999-12-31] es el intervalo legal para las fechas. Se rechaza la operación de escritura en una columna de fecha si el valor no se encuentra entre ese intervalo.
  • Consulta más información y el formato canónico en Tipos de datos.

TIMESTAMP

  • Es una marca de tiempo con precisión de nanosegundos.
  • La zona horaria es independiente, en el rango [0001-01-01 00:00:00 a 10000-01-01 00:00:00].
  • Consulta más información y el formato canónico en Tipos de datos.

Arreglos

Esta es la sintaxis para usar el tipo ARRAY en DDL:

ARRAY< scalar_type >

Cloud Spanner admite arreglos de escalares. El propósito principal de los arreglos es almacenar una colección de valores de manera eficiente en el espacio. Los arreglos no están diseñados para proporcionar acceso a elementos individuales. Para leer o escribir un solo elemento, debes leer o escribir todo el arreglo.

Si tu aplicación usa estructuras de datos, como vectores o campos repetidos, puedes conservar su estado en un arreglo de Cloud Spanner.

A continuación, se muestra un ejemplo de una definición alternativa de Singers que utiliza varias columnas del tipo ARRAY:

CREATE TABLE Singers (
  SingerId INT64,
  FeaturedSingerIds ARRAY<INT64>,
  SongNames ARRAY<STRING(MAX)>,
) PRIMARY KEY (SingerId) ...;

Notas:

  • No se admiten arreglos con el subtipo ARRAY (arreglos anidados).
  • Los arreglos, al igual que los valores de escalares, nunca pueden tener más de 10 MiB en total.
  • No se pueden usar arreglos como columnas de clave.
  • En una declaración CREATE TABLE, puedes crear columnas de tipo ARRAY con una anotación NOT NULL.

    Después de crear la tabla, no puedes agregar una columna de tipo ARRAY con una anotación NOT NULL ni agregar una anotación NOT NULL a una columna existente de tipo ARRAY.

Declaraciones TABLE

CREATE TABLE

Define una tabla nueva.

Sintaxis

CREATE TABLE table_name ( [
   { column_name data_type [ NOT NULL ] [AS ( expression ) STORED] [ options_def ]
   | table_constraint }
   [, ... ]
] ) PRIMARY KEY ( [column_name [ { ASC | DESC } ], ...] )
[, INTERLEAVE IN PARENT table_name [ ON DELETE { CASCADE | NO ACTION } ] ]

where data_type is:
    { scalar_type | array_type }

and options_def is:
    { OPTIONS ( allow_commit_timestamp = { true | null } ) }

and table_constraint is:
    [ CONSTRAINT constraint_name ]
    { CHECK ( expression ) |
      FOREIGN KEY ( column_name [, ... ] ) REFERENCES  ref_table  ( ref_column [, ... ] ) }

Descripción

CREATE TABLE define una tabla nueva en la base de datos actual.

Parámetros

table_name

column_name

  • El nombre de una columna que se creará. Para obtener orientación sobre nombres, consulta Convenciones de nombres.

data_type

  • El tipo de datos de la columna, que puede ser una Escalar o un tipo de Arreglo.

NOT NULL

  • Esta anotación de columna opcional especifica que la columna es obligatoria para todas las mutaciones que insertan una fila nueva.

  • No puedes agregar una columna NULL a una tabla existente. Para la mayoría de los tipos de columnas, puedes evitar esta limitación:

    • En las columnas de tipo ARRAY, el único momento en que puedes usar una anotación NOT NULL es cuando creas la tabla. Después de eso, no podrás agregar una anotación NOT NULL a una columna de tipo ARRAY.

    • Para todos los demás tipos de columnas, puede agregar una columna con valores nulos, escribir valores en todas las filas para llenar esa columna y actualizar tu esquema con una anotación NOT NULL en esa columna.

AS ( expression ) STORED

  • Esta cláusula crea una columna como una columna generada, que es una columna cuyo valor se define como una función de otras columnas en la misma fila.

  • expression puede ser cualquier expresión de SQL válida que se pueda asignar al tipo de datos de la columna con las siguientes restricciones.

  • El atributo STORED que sigue a la expresión provoca que el resultado de la función se almacene junto con otras columnas de la tabla. Las actualizaciones posteriores de cualquiera de las columnas a las que se hace referencia hacen que la expresión se vuelva a evaluar y se almacene.

  • No se permiten las columnas generadas sin el atributo STORED.

  • No se permiten las escrituras directas a columnas generadas.

  • Las columnas generadas no se pueden usar ni como parte de una clave primaria. Sin embargo, pueden ser claves de índice secundarias.

  • No se permite la opción de columna allow_commit_timestamp en las columnas generadas ni las columnas a las que se hace referencia en las columnas generadas.

  • No puedes cambiar el tipo de datos de una columna generada ni las columnas a las que hace referencia la columna generada.

  • No puedes descartar una columna a la que se hace referencia en una columna generada.

Para obtener ejemplos sobre cómo trabajar con columnas generadas, consulta Crea y administra columnas generadas.

PRIMARY KEY ( [column_name[ { ASC | DESC } ], ...]

  • Cada tabla debe tener una clave primaria, y esta clave puede estar compuesta por cero o más columnas de esa tabla.

  • Agregar la anotación DESC en un nombre de columna de clave primaria cambia el diseño físico de los datos de orden ascendente (predeterminado) a orden descendente.

Para obtener más detalles, consulta Esquema y modelo de datos.

[, INTERLEAVE IN PARENTtable_name[ ON DELETE { CASCADE | NO ACTION } ] ]

  • Esta cláusula define una relación de tabla de elemento superior a secundario, lo que da como resultado una intercalación física de las filas superior y secundaria. Las columnas de clave primaria de un elemento superior deben coincidir posicionalmente, tanto en nombre como en tipo, con un prefijo de las columnas de clave primaria de cualquier elemento secundario. La adición de filas a la tabla secundaria falla si la fila superior correspondiente no existe. La fila superior puede ya existir en la base de datos o puede insertarse antes de la inserción de las filas secundarias en la misma transacción.

  • La cláusula ON DELETE opcional define el comportamiento de las filas en ChildTable cuando una mutación intenta borrar la fila superior. Estas son las opciones compatibles:

    • CASCADE: las filas secundarias se borran.

    • NO ACTION: las filas secundarias no se borran. La operación de escritura fallará si la eliminación de un elemento superior no tuviera en cuenta a las filas secundarias, lo que infringiría la integridad referencial superior-secundario.

    Puedes omitir la cláusula ON DELETE, en cuyo caso se usa el valor predeterminado ON DELETE NO ACTION.

Para obtener más detalles, consulta Esquema y modelo de datos.

CONSTRAINTconstraint_name

  • Un nombre opcional para una restricción de tabla. Si no se especifica un nombre, Cloud Spanner genera un nombre para la restricción. Los nombres de restricciones, incluidos los nombres generados, se pueden consultar desde el esquema de información de Cloud Spanner.

CHECK (expression)

  • Una restricción CHECK te permite especificar que los valores de una o más columnas deben satisfacer una expresión booleana.

  • expression puede ser cualquier expresión de SQL válida que se evalúe como BOOL.

  • Las siguientes restricciones se aplican a una restricción de verificación de término expression.

    • La expresión solo puede hacer referencia a columnas en la misma tabla.

    • La expresión debe hacer referencia a, al menos, una columna no generada, ya sea de forma directa o a través de una columna generada que haga referencia a una columna no generada.

    • La expresión no puede hacer referencia a columnas que establecieron la opción allow_commit_timestamp.

    • La expresión no puede contener subconsultas.

    • La expresión no puede contener funciones no deterministas, como CURRENT_DATE() y CURRENT_TIMESTAMP().

  • Para obtener más información, consulta Crea y administra restricciones de verificación.

FOREIGN KEY (column_name[, ... ] ) REFERENCESref_table(ref_column[, ... ] )

  • Usa esta cláusula para definir una restricción de clave externa. Una clave externa se define en la tabla referente de la relación y hace referencia a la tabla a la que se hace referencia. Las columnas de claves externas de las dos tablas se llaman columnas de referencia y referencias, y sus valores de fila son las claves.

  • Una restricción de clave externa requiere que una o más columnas de esta tabla solo puedan contener valores que se encuentren en las columnas referenciadas de la tabla referenciada.

  • Cuando creas una clave externa, se crea una restricción única de forma automática en la tabla a la que se hace referencia, a menos que se haga referencia a toda la clave primaria. Si la restricción única no se puede cumplir, el cambio de esquema completo fallará.

  • La cantidad de columnas de referencia y a las que se hace referencia debe ser la misma. El orden también es significativo. Es decir, la primera columna de referencia se refiere a la primera columna a la que se hace referencia, de segundo a segundo, y así sucesivamente.

  • Las columnas de referencia y de referencia deben tener tipos coincidentes y deben admitir el operador de igualdad (“=”). Las columnas también deben poder indexarse. No se permiten las columnas de tipo ARRAY.

  • Las claves externas no se pueden crear en columnas con la opción allow_commit_timestamp=true.

Para obtener más información, consulta Claves externas.

OPTIONS ( allow_commit_timestamp = { true | null } )

  • La opción allow_commit_timestamp permite insertar y actualizar operaciones para solicitar que Cloud Spanner escriba la marca de tiempo de confirmación de la transacción en la columna. Para obtener más información, consulta cómo confirmar las marcas de tiempo.

ALTER TABLE

Cambia la definición de una tabla.

Sintaxis

ALTER TABLE table_name
    action [, ... ]

where action is:
    ADD [ COLUMN  ] column_name data_type [ NOT NULL]  [AS ( expression ) STORED] [ options_def ]
    DROP [ COLUMN ] column_name
    ADD table_constraint
    DROP CONSTRAINT constraint_name
    SET ON DELETE { CASCADE | NO ACTION }
    ALTER [ COLUMN ] column_name { { data_type } [ NOT NULL ] | SET [ options_def ] }

and data_type is:
    { scalar_type | array_type }

and options_def is:
    { OPTIONS (allow_commit_timestamp = { true | null } ) }

and table_constraint is:
    [ CONSTRAINT constraint_name ]
    { CHECK ( expression ) |
      FOREIGN KEY ( column_name [, ... ] ) REFERENCES ref_table ( ref_column [, ... ] ) }

Descripción

ALTER TABLE cambia la definición de una tabla existente.

ADD COLUMN

  • Agrega una columna nueva a la tabla con la misma sintaxis que CREATE TABLE.

DROP COLUMN

  • Quita una columna de una tabla.

  • No puedes descartar una columna a la que se hace referencia en una columna generada.

  • No se permite descartar una columna a la que hace referencia una restricción CHECK.ADDtable_constraint

  • Agrega una restricción nueva a una tabla con la misma sintaxis que CREATE TABLE.

  • Para las claves externas, los datos existentes se validan antes de que se agregue la clave externa. Si alguna clave restringida existente no tiene una clave a la que se hace referencia, o si la clave a la que se hace referencia no es única, la restricción está en incumplimiento y la declaración ALTER falla.

  • Para las restricciones de CHECK, los datos nuevos se validan de inmediato según la restricción. También comienza un proceso de larga duración para validar los datos existentes en función de la restricción. Si los datos existentes no cumplen con la restricción, se aplica la restricción de verificación.

  • Las siguientes restricciones se aplican a una restricción de verificación de término expression.

    • La expresión solo puede hacer referencia a columnas en la misma tabla.

    • La expresión debe hacer referencia a, al menos, una columna no generada, ya sea de forma directa o a través de una columna generada que haga referencia a una columna no generada.

    • La expresión no puede hacer referencia a columnas que establecieron la opción allow_commit_timestamp.

    • La expresión no puede contener subconsultas.

    • La expresión no puede contener funciones no deterministas, como CURRENT_DATE() y CURRENT_TIMESTAMP().

DROP CONSTRAINTconstraint_name

  • Quita la restricción especificada en una tabla, junto con cualquier índice asociado, si corresponde.

SET ON DELETE { CASCADE | NO ACTION }

  • Esta alteración solo se puede aplicar en tablas secundarias de relaciones entre tablas superiores y secundarias, tablas intercaladas. Para obtener más información, consulta Esquema y modelo de datos.

  • La cláusula ON DELETE CASCADE significa que cuando se borra una fila de la tabla superior, también se borran automáticamente las filas secundarias de esta tabla. Todas las filas secundarias son filas que comienzan con la misma clave primaria. Si una tabla secundaria no la incluye (o si agregas la anotación ON DELETE NO ACTION), debes borrar manualmente las filas secundarias para borrar la fila superior.

ALTER COLUMN

  • Cambia la definición de una columna existente en una tabla.

Parámetros

table_name

  • El nombre de una tabla existente que se va a modificar.

column_name

  • El nombre de una columna nueva o existente. No puedes cambiar las columnas clave de una tabla.

data_type

  • Tipo de datos de la columna nueva o tipo de datos nuevos para una columna existente.

  • No puedes cambiar el tipo de datos de una columna generada ni las columnas a las que hace referencia la columna generada.

  • No se permite cambiar el tipo de datos en ninguna columna referenciada en una restricción CHECK. options_def

  • La opción (allow_commit_timestamp=true) permite insertar y actualizar operaciones para solicitar que Cloud Spanner escriba la marca de tiempo de confirmación de la transacción en la columna. Para obtener más información, consulta cómo confirmar las marcas de tiempo.

table_constraint

  • Nueva restricción de tabla para la tabla.

constraint_name

  • El nombre de una restricción nueva o existente.

ref_table

  • La columna referenciada en una restricción de clave externa.

ref_column

  • La columna referenciada en una restricción de clave externa.

DROP TABLE

Quita una tabla.

Sintaxis

DROP TABLE table_name

Descripción

Usa la declaración DROP TABLE para quitar una tabla de la base de datos.

  • DROP TABLE no se puede recuperar.

  • No puedes descartar una tabla si tiene índices, ni si hay tablas o índices intercalados en ella.

  • Una declaración DROP TABLE descarta automáticamente los índices de copia de seguridad de las claves externas y las claves externas de la tabla.

Parámetros

table_name

  • El nombre de la tabla que se quitará.

Declaraciones INDEX

CREAR ÍNDICE

Usa la declaración CREATE INDEX para definir índices secundarios.

Sintaxis

CREATE [ UNIQUE ] [ NULL_FILTERED ] INDEX index_name
ON table_name ( key_part [, ...] ) [ storing_clause ] [ , interleave_clause ]

where index_name is:
    {a—z|A—Z}[{a—z|A—Z|0—9|_}+]

and key_part is:
    column_name [ { ASC | DESC } ]

and storing_clause is:
    STORING ( column_name [, ...] )

and interleave_clause is:
    INTERLEAVE IN table_name

Descripción

Cloud Spanner indexa de forma automática las columnas de clave primaria de cada tabla.

Puedes usar CREATE INDEX a fin de crear índices secundarios para otras columnas. Agregar un índice secundario a una columna hace que la búsqueda de datos en esa columna sea más eficiente. Para obtener más detalles, consulta indexesndices secundarios.

Parámetros

UNIQUE

  • Indica que este índice secundario aplica una restricción UNIQUE a los datos que se indexan. La restricción UNIQUE provoca que se rechace cualquier transacción que genere una clave de índice duplicada. Consulta Índices únicos para obtener más información.

NULL_FILTERED

  • Indica que este índice secundario no indexa valores NULL. Consulta Indexa valores NULL para obtener más información.

index_name

table_name

  • El nombre de la tabla que se indexará.

INTERLEAVE IN

  • Define una tabla para intercalar el índice. Si T es la tabla en la que se intercala el índice, entonces:

    • T debe ser un elemento superior de la tabla que se está indexando.
    • La clave primaria de T debe ser el prefijo de la clave del índice.

    ¿Cuándo deberías crear un índice intercalado? Si la clave de índice que deseas usar para operaciones de índice coincide con la clave de una tabla, puedes intercalar el índice en esa tabla si la fila debe tener una relación de localidad de datos con las filas indexadas correspondientes.

    Por ejemplo, si deseas indexar todas las filas de Songs para una fila específica de Singers, tus claves de índice contendrían SingerId y SongName y el índice sería un buen candidato para intercalar Singers si recuperas con frecuencia información sobre un cantante cuando recuperas las canciones de ese cantante desde el índice. La definición de SongsBySingerSongName en Crea un índice secundario es un ejemplo de creación de ese índice intercalado.

    Al igual que las tablas intercaladas, las entradas de un índice intercalado se almacenan con la fila correspondiente de la tabla superior. Consulta las divisiones de bases de datos para obtener más detalles.

DESC

  • Define el orden de análisis descendente para la columna de índice correspondiente. Cuando se analiza una tabla con una columna de índice marcada DESC, las filas analizadas aparecen en orden descendente con respecto a esta columna de índice. Si no especificas un orden de clasificación, el valor predeterminado es ascendente (ASC).

STORING

  • Proporciona un mecanismo para duplicar los datos de la tabla en uno o más índices secundarios de esa tabla. A costa del almacenamiento adicional, esto puede reducir la latencia de lectura cuando se buscan datos con un índice secundario, ya que elimina la necesidad de recuperar datos de la tabla principal después de haber encontrado las entradas deseadas en el índice. Consulta la cláusula STORING para ver un ejemplo.

DROP INDEX

Quita un índice secundario.

Sintaxis

DROP INDEX index_name

Descripción

Usa la declaración DROP INDEX para descartar un índice secundario.

Parámetros

index_name

  • Es el nombre del índice que se quitará.

Las siguientes reglas se aplican a los ID de base de datos.

  • Debe comenzar con una letra en minúscula.
  • Puede contener letras minúsculas, números, guiones bajos y guiones, pero no letras mayúsculas.
  • No puede terminar con guion bajo o guion.
  • Debe estar encerrado entre acentos graves (`) si es una palabra reservada o contiene un guion.
  • Puede tener entre 2 y 30 caracteres.
  • No se puede cambiar después de crearlo.