Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
DMLdeclaraciones (lenguaje de manipulación de datos) en Amazon Keyspaces
El lenguaje de manipulación de datos (DML) es el conjunto de sentencias de Cassandra Query Language (CQL) que se utilizan para gestionar los datos en las tablas de Amazon Keyspaces (para Apache Cassandra). DMLLas sentencias se utilizan para añadir, modificar o eliminar datos de una tabla.
También se utilizan DML sentencias para consultar los datos de una tabla. (Ten en cuenta que CQL no admite uniones ni subconsultas).
SELECT
Usa una SELECT sentencia para consultar datos.
Sintaxis
select_statement ::= SELECT [ JSON ] ( select_clause | '*' ) FROM table_name [ WHERE 'where_clause' ] [ ORDER BY 'ordering_clause' ] [ LIMIT (integer | bind_marker) ] [ ALLOW FILTERING ] select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] ) selector ::= column_name | term | CAST '(' selector AS cql_type ')' | function_name '(' [ selector ( ',' selector )* ] ')' where_clause ::= relation ( AND relation )* relation ::= column_name operator term TOKEN operator ::= '=' | '<' | '>' | '<=' | '>=' | IN | CONTAINS | CONTAINS KEY ordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name [ ASC | DESC ] )*
Ejemplos
SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ; SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;
Para ver una tabla que asigna tipos de datos JSON codificados a tipos de datos de Amazon Keyspaces, consulte. JSONcodificación de los tipos de datos de Amazon Keyspaces
Uso de la palabra clave IN
La palabra clave IN
especifica la igualdad de uno o más valores. Se puede aplicar a la clave de partición y a la columna de agrupación. Los resultados se devuelven en el orden en que se presentan las claves en la instrucción SELECT
.
Ejemplos
SELECT * from
mykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 = 2; SELECT * frommykeyspace.mytable
WHERE primary.key1 IN (1,2) and clustering.key1 <= 2; SELECT * frommykeyspace.mytable
WHERE primary.key1 = 1 and clustering.key1 IN (1, 2); SELECT * frommykeyspace.mytable
WHERE primary.key1 <= 2 and clustering.key1 IN (1, 2) ALLOW FILTERING;
Para obtener más información sobre la palabra clave IN
y la forma en que Amazon Keyspaces procesa la instrucción, consulte Uso del operador IN con la instrucción SELECT en Amazon Keyspaces.
Ordenación de los resultados
La cláusula ORDER BY
especifica el orden de clasificación de los resultados devueltos. Toma como argumentos una lista de nombres de columnas junto con el orden de clasificación de cada columna. Solo puede especificar columnas de agrupación en las cláusulas de ordenación. Las columnas no agrupadas no están permitidas. Las opciones de ordenación son ASC
para ordenación ascendente y DESC
para ordenación descendente. Si se omite el orden de clasificación, se utiliza el orden predeterminado de la columna de agrupación. Acerca de los posibles criterios de ordenación, consulte. Ordenación de resultados en Amazon Keyspaces
Ejemplo
SELECT name, id, division, manager_id FROM "myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY division;
Al utilizar ORDER BY
con la palabra clave IN
, los resultados se ordenan dentro de una página. No se admite la reordenación completa con la paginación deshabilitada.
TOKEN
Puede aplicar la función TOKEN
a la columna PARTITION KEY
en las cláusulas SELECT
y WHERE
. Con la función TOKEN
, Amazon Keyspaces devuelve filas basadas en el valor del token asignado de la PARTITION_KEY
en lugar de en el valor de la PARTITION KEY
.
Las relaciones TOKEN
no se admiten con la palabra clave IN
.
Ejemplos
SELECT TOKEN(id) from
my_table
; SELECT TOKEN(id) frommy_table
WHERE TOKEN(id) > 100 and TOKEN(id) < 10000;
TTLfunción
Puede utilizar la función TTL
con la instrucción SELECT
para recuperar el tiempo de caducidad en segundos que se almacena para una columna. Si no se establece ningún valor TTL
, la función devuelve null
.
Ejemplo
SELECT TTL(
my_column
) frommy_table
;
La función TTL
no se puede utilizar en columnas multicelda, como las colecciones.
Función de WRITETIME
Puede utilizar la función WRITETIME
con la instrucción SELECT
para recuperar la marca de tiempo que se almacena como metadatos para el valor de una columna solo si la tabla utiliza marcas de tiempo en el lado del cliente. Para obtener más información, consulte Funcionamiento de las marcas de tiempo del lado del cliente en Amazon Keyspaces.
SELECT WRITETIME(
my_column
) frommy_table
;
La función WRITETIME
no se puede utilizar en columnas multicelda, como las colecciones.
nota
Para garantizar la compatibilidad con el comportamiento establecido de los controladores de Cassandra, las políticas de autorización basadas en etiquetas no se aplican cuando se realizan operaciones en las tablas del sistema mediante API llamadas al lenguaje de consulta de Cassandra (CQL) a través de los controladores y las herramientas de desarrollo de Cassandra. Para obtener más información, consulte Acceso a recursos de Amazon Keyspaces basado en etiquetas.
INSERT
Utilice la instrucción INSERT
para añadir una fila a una tabla.
Sintaxis
insert_statement ::= INSERT INTO table_name ( names_values | json_clause ) [ IF NOT EXISTS ] [ USING update_parameter ( AND update_parameter )* ] names_values ::= names VALUES tuple_literal json_clause ::= JSON string [ DEFAULT ( NULL | UNSET ) ] names ::= '(' column_name ( ',' column_name )* ')'
Ejemplo
INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project, region, division, role, pay_scale, vacation_hrs, manager_id) VALUES ('012-34-5678','Russ','NightFlight','US','Engineering','IC',3,12.5, '234-56-7890') ;
Actualización de parámetros
INSERT
admite los siguientes valores como update_parameter
:
TTL
: un valor de tiempo en segundos. El valor máximo configurable es de 630 720 000 segundos, lo que equivale a 20 años.TIMESTAMP
— Unbigint
valor que representa el número de microsegundos transcurridos desde la hora base estándar conocida comoepoch: 1 de enero de 1970 a las 00:00:00 horas. GMT Una marca de tiempo en Amazon Keyspaces debe estar comprendida entre 2 días en el pasado y 5 minutos en el futuro.
Ejemplo
INSERT INTO
my_table
(userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123') USING TTL 259200;
JSONsoporte
Para ver una tabla que asigna tipos de datos JSON codificados a tipos de datos de Amazon Keyspaces, consulte. JSONcodificación de los tipos de datos de Amazon Keyspaces
Puede utilizar la palabra clave JSON
para insertar un mapa codificado con JSON
como una única fila. En el caso de las columnas que existen en la tabla pero que se omiten en la instrucción de JSON inserción, utilícelas DEFAULT UNSET
para conservar los valores existentes. Se utiliza DEFAULT NULL
para escribir un NULL valor en cada fila de columnas omitidas y sobrescribir los valores existentes (se aplican los cargos de escritura estándar). DEFAULT
NULL
es la opción por defecto.
Ejemplo
INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "manager_id": "234-56-7890"}';
Si los JSON datos contienen claves duplicadas, Amazon Keyspaces almacena el último valor de la clave (similar a Apache Cassandra). En el siguiente ejemplo, en el que la clave duplicada es id
, se utiliza el valor 234-56-7890
.
Ejemplo
INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-5678", "name": "Russ", "project": "NightFlight", "region": "US", "division": "Engineering", "role": "IC", "pay_scale": 3, "vacation_hrs": 12.5, "id": "234-56-7890"}';
UPDATE
Utilice la instrucción UPDATE
para modificar una fila en una tabla.
Sintaxis
update_statement ::= UPDATE table_name [ USING update_parameter ( AND update_parameter )* ] SET assignment ( ',' assignment )* WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] update_parameter ::= ( integer | bind_marker ) assignment ::= simple_selection '=' term | column_name '=' column_name ( '+' | '-' ) term | column_name '=' list_literal '+' column_name simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term
Ejemplo
UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id = '567-89-0123' AND division = 'Marketing' ;
Para incrementar un counter
, utilice la siguiente sintaxis. Para obtener más información, consulte Contadores.
UPDATE ActiveUsers SET counter = counter + 1 WHERE user = A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';
Actualización de parámetros
UPDATE
admite los siguientes valores como update_parameter
:
TTL
: un valor de tiempo en segundos. El valor máximo configurable es de 630 720 000 segundos, lo que equivale a 20 años.TIMESTAMP
— Unbigint
valor que representa el número de microsegundos transcurridos desde la hora base estándar conocida comoepoch: 1 de enero de 1970 a las 00:00:00 horas. GMT Una marca de tiempo en Amazon Keyspaces debe estar comprendida entre 2 días en el pasado y 5 minutos en el futuro.
Ejemplo
UPDATE
my_table
(userid, time, subject, body, user) VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-90d7-b5d91eceda0a, 'Message', 'Hello again','205.212.123.123') USING TIMESTAMP '2022-11-03 13:30:54+0400';
DELETE
Utilice la instrucción DELETE
para eliminar una fila en una tabla.
Sintaxis
delete_statement ::= DELETE [ simple_selection ( ',' simple_selection ) ] FROM table_name [ USING update_parameter ( AND update_parameter )* ] WHERE where_clause [ IF ( EXISTS | condition ( AND condition )*) ] simple_selection ::= column_name | column_name '[' term ']' | column_name '.' `field_name condition ::= simple_selection operator term
Donde:
-
table_name
es la tabla que contiene la fila que desea eliminar.
Ejemplo
DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE id='789-01-2345' AND division='Executive' ;
DELETE
admite el siguiente valor como update_parameter
:
TIMESTAMP
— Unbigint
valor que representa el número de microsegundos desde la hora base estándar, conocida comoepoch: 1 de enero de 1970 a las 00:00:00 GMT