SELECT - Amazon Quantum Ledger Database (Amazon QLDB)

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.

SELECT

UsarSELECTpara recuperar datos de una o varias tablas de Amazon QLDB. CadaSELECTconsulta en QLDB se procesa en una transacción y está sujeta alímite de tiempo de espera de transacciones.

El orden de los resultados no es específico y puede variar para cada unoSELECTconsulta. No debe confiar en el orden de los resultados para ninguna consulta en QLDB.

Para obtener información sobre cómo controlar el acceso para ejecutar este comando de PartiQL en tablas específicas, consulteIntroducción al modo de permisos estándar en Amazon QLDB.

aviso

Cuando se ejecuta una consulta en QLDB sin una búsqueda indexada, se invoca un análisis de tabla completa. PartiQL admite este tipo de consultas porque es compatible con SQL. Sin embargo,Don'tejecutar exploraciones de tablas para casos de uso de producción en QLDB. Los análisis de tablas pueden provocar problemas de rendimiento en tablas grandes, incluidos conflictos de simultaneidad y tiempos de espera de transacciones agotados.

Para evitar el análisis de tablas, debe ejecutar instrucciones con unWHEREcláusula de predicado que utiliza unigualdadoperador en un campo indexado o un identificador de documento; por ejemplo,WHERE indexedField = 123oWHERE indexedField IN (456, 789). Para obtener más información, consulte Optimización del rendimiento de consultas.

Sintaxis

SELECT [ VALUE ] expression [ AS field_alias ] [, expression, ... ] FROM source [ AS source_alias ] [ AT idx_alias ] [ BY id_alias ] [, source, ... ] [ WHERE condition ]

Parámetros

VALUE

Un calificador para la expresión que hace que la consulta devuelva el valor del tipo de datos sin procesar, en lugar del valor que se envuelve en una estructura de tupla.

expresión

Una proyección formada a partir del*un comodín o una lista de proyección de uno o más campos de documentos del conjunto de resultados. Una expresión puede consistir en llamadas a Funciones PartiQL o campos modificados por Operadores PartiQL.

COMOfield_alias

(Opcional) Un alias temporal definido por el usuario para el campo que se utiliza en el conjunto de resultados finales. LaASes opcional.

Si no se especifica un alias para una expresión que no sea un nombre de campo simple, el conjunto de resultados aplica un nombre predeterminado a ese campo.

DESDEorigen

Una fuente que se va a consultar. Las únicas fuentes admitidas actualmente son los nombres de tablas,Combinaciones interioresentre tablas, anidadasSELECTconsultas (sujetas aLimitación de las consultas agrupadas), yfunción de historialpide una mesa.

Debe especificar al menos una fuente. Las fuentes múltiples deben estar separadas por comas.

COMOsource_alias

(Opcional) Un alias definido por el usuario que abarca un origen que se va a consultar. Todos los alias de origen que se utilizan en laSELECTOWHEREdebe declararse en elFROMCláusula clave. LaASes opcional.

Aidx_alias

(Opcional) Un alias definido por el usuario que enlaza con el número de índice (ordinal) de cada elemento de una lista de la fuente. El alias debe declararse en la tablaFROMmediante el uso delATPalabra clave.

PORid_alias

(Opcional) Un alias definido por el usuario que enlaza con elidcampo de metadatos de cada documento del conjunto de resultados. El alias debe declararse en la tablaFROMmediante el uso delBYPalabra clave. Esto resulta útil cuando se quiere proyectar o filtrar en elID deal consultar la vista de usuario predeterminada. Para obtener más información, consulte Uso de la cláusula BY para consultar el ID de documento.

WHERE condition (condición)

Los criterios de selección y los criterios de unión (si corresponde) de la consulta.

nota

Si omite elWHERE, se recuperarán todos los documentos de la tabla.

combinaciones;

Actualmente solo se admiten uniones internas. Puede escribir consultas de unión internas mediante el comando explícitoINNER JOINcláusula, de la siguiente manera. En esta sintaxis,JOINdebe estar emparejado conON, y elINNERes opcional.

SELECT expression FROM table1 AS t1 [ INNER ] JOIN table2 AS t2 ON t1.element = t2.element

O bien, puede escribir uniones internas utilizando la sintaxis implícita, de la siguiente manera.

SELECT expression FROM table1 AS t1, table2 AS t2 WHERE t1.element = t2.element

Limitación de las consultas agrupadas

Puedes escribir consultas anidadas (subconsultas) enSELECTexpresiones y dentroFROMOrígenes. La principal restricción es que solo la consulta más externa puede acceder al entorno de base de datos global. Por ejemplo, suponga que tiene un libro de contabilidad con tablasVehicleRegistrationyPerson. La siguiente consulta anidada no es válida porque elSELECTintenta accederPerson.

SELECT r.VIN, (SELECT p.PersonId FROM Person AS p WHERE p.PersonId = r.Owners.PrimaryOwner.PersonId) AS PrimaryOwner FROM VehicleRegistration AS r

Mientras que la siguiente consulta anidada es válida.

SELECT r.VIN, (SELECT o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r

Ejemplos

La siguiente consulta muestra unaSELECTtodos los comodines con un estándarWHEREcláusula de predicado que utiliza elINoperador.

SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

El siguiente ejemplo muestraSELECTproyecciones con filtro de cadena.

SELECT FirstName, LastName, Address FROM Person WHERE Address LIKE '%Seattle%' AND GovId = 'LEWISR261LL'

A continuación, se muestra una subconsulta correlacionada que aplana los datos anidados. Tenga en cuenta que la@es opcional desde el punto de visto técnico. Sin embargo, indica explícitamente que usted quiere elOwnersestructura que está anidada dentroVehicleRegistration, no una colección diferente llamadaOwners(si existiera alguno). Para obtener más contexto, consulteDatos anidadosen el capítuloUso de datos e historial.

SELECT r.VIN, o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

A continuación se muestra una subconsulta en la subconsultaSELECTlista que proyecta datos anidados y una unión interna implícita.

SELECT v.Make, v.Model, (SELECT VALUE o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

A continuación se muestra una unión interna explícita.

SELECT v.Make, v.Model, r.Owners FROM VehicleRegistration AS r JOIN Vehicle AS v ON r.VIN = v.VIN WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

A continuación se muestra una proyección del documentoidcampo de metadatos, mediante el campoBYCláusula clave.

SELECT r_id, r.VIN FROM VehicleRegistration AS r BY r_id WHERE r_id = 'documentId'

A continuación, se utiliza elBYcláusula para unirse a laDriversLicenseyPersonmesas en susPersonIdy no válidoid, respectivamente.

SELECT * FROM DriversLicense AS d INNER JOIN Person AS p BY pid ON d.PersonId = pid WHERE pid = 'documentId'

A continuación, se utiliza elVista comprometidapara unirse aDriversLicenseyPersonmesas en susPersonIdy no válidoid, respectivamente.

SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS cp ON d.PersonId = cp.metadata.id WHERE cp.metadata.id = 'documentId'

La siguiente tabla devuelve laPersonIdy el número índice (ordinal) de cada persona en elOwners.SecondaryOwnerslista de un documento en la tablaVehicleRegistration.

SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = 'KM8SRDHF6EU074761'

Ejecutar mediante programación mediante el controlador

Para obtener información sobre cómo ejecutar esta instrucción mediante programación mediante el controlador QLDB, consulte los siguientes tutoriales enIntroducción al conductor: