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.
Comando SELECT en Amazon QLDB
En Amazon QLDB, utilice elSELECT
comando para recuperar datos de una o más tablas. CadaSELECT
consulta en QLDB se procesa en una transacción y está sujeta a un límite de tiempo de espera de la transacción.
El orden de los resultados no es específico y puede variar para cadaSELECT
consulta. 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 ejecuta una consulta en QLDB sin una búsqueda indexada, se invoca un escaneo completo de la tabla. PartiQL admite este tipo de consultas porque es compatible con SQL. Sin embargo, no realice escaneos de tablas para casos de uso de producción en QLDB. Los escaneos de tablas pueden provocar problemas de rendimiento en tablas grandes, como conflictos de concurrencia y tiempos de espera de las transacciones.
Para evitar el escaneo de tablas, debe ejecutar sentencias con una cláusula deWHERE
predicado mediante un operador de igualdad en un campo indexado o en un identificador de documento; por ejemplo,WHERE indexedField = 123
oWHERE indexedField IN (456, 789)
. Para obtener más información, consulte Optimización del rendimiento de las consultas.
Temas
Sintaxis
SELECT [ VALUE ]
expression
[ ASfield_alias
] [,expression
, ... ] FROMsource
[ ASsource_alias
] [ ATidx_alias
] [ BYid_alias
] [,source
, ... ] [ WHEREcondition
]
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 de que el valor esté envuelto en una estructura de tuplas.
expression
-
Una proyección formada a partir del
*
comodín o una lista de proyección de uno o más campos del documento del conjunto de resultados. Una expresión puede consistir en llamadas a Funciones PartiQL o campos modificados por operadores PartiQL. - AS
field_alias
-
(Opcional) Un alias temporal definido por el usuario para el campo que se utiliza en el conjunto de resultados final. La
AS
palabra clave es opcional.Si no especificas un alias para una expresión que no sea un nombre de campo simple, el conjunto de resultados aplicará un nombre predeterminado a ese campo.
- DE la
fuente
-
Una fuente a consultar. Las únicas fuentes admitidas actualmente son los nombres de las tablas, las uniones internas entre tablas, las
SELECT
consultas anidadas (sujetas aLimitaciones de consultas anidadas) y las llamadas a funciones de historial para una tabla.Debe especificar al menos una fuente. Las múltiples fuentes deben ir separadas por comas.
- AS
source_alias
-
(Opcional) Un alias definido por el usuario que abarca la fuente a consultar. Todos los alias de origen que se utilizan en la
WHERE
cláusulaSELECT
OR deben declararse en laFROM
cláusula. LaAS
palabra clave es opcional. - EN
idx_alias
-
(Opcional) Un alias definido por el usuario que se enlaza al número de índice (ordinal) de cada elemento de una lista de la fuente. El alias debe declararse en la
FROM
cláusula mediante laAT
palabra clave. - DE
id_alias
-
(Opcional) Un alias definido por el usuario que se enlaza al campo de
id
metadatos de cada documento del conjunto de resultados. El alias debe declararse en laFROM
cláusula mediante laBY
palabra clave. Esto resulta útil cuando desea proyectar o filtrar el ID del documento mientras consulta la vista de usuario predeterminada. Para obtener más información, consulte Uso de la cláusula BY para consultar el ID del documento. - WHERE
condition
-
Los criterios de selección y los criterios de unión (si procede) de la consulta.
nota
Si omite laWHERE
cláusula, se recuperarán todos los documentos de la tabla.
combinaciones;
Actualmente solo se admiten Ion Puede escribir consultas de unión internas mediante laINNER JOIN
cláusula explícita, de la siguiente manera. En esta sintaxis,JOIN
debe combinarse conON
, y laINNER
palabra clave es opcional.
SELECT
expression
FROM table1 AS t1 [ INNER ] JOIN table2 AS t2 ON t1.element
= t2.element
O bien, puede escribir uniones internas mediante la sintaxis implícita, de la siguiente manera.
SELECT
expression
FROM table1 AS t1, table2 AS t2 WHERE t1.element
= t2.element
Limitaciones de consultas anidadas
Puede escribir consultas anidadas (subconsultas) dentro deSELECT
expresiones yFROM
fuentes. 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 dispone de un libro mayor con tablasVehicleRegistration
yPerson
. La siguiente consulta anidada no es válida porque el internoSELECT
intenta 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 un comodín básicoSELECT
con una cláusula deWHERE
predicado estándar que usa elIN
operador.
SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
A continuación se muestranSELECT
las proyecciones con un filtro de cadenas.
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 el@
carácter es técnicamente opcional en este caso. Sin embargo, indica explícitamente que desea laOwners
estructura en la que está anidadaVehicleRegistration
, no una colección con un nombre diferenteOwners
(si existe alguna). Para obtener más contexto, consulteDatos anidados el capítulo Trabajar con 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 de laSELECT
lista 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 campo deid
metadatos del documento mediante laBY
cláusula.
SELECT r_id, r.VIN FROM VehicleRegistration AS r BY r_id WHERE r_id = '
documentId
'
A continuación se utiliza laBY
cláusula para unir lasPerson
tablasDriversLicense
y en susid
camposPersonId
y documentos, respectivamente.
SELECT * FROM DriversLicense AS d INNER JOIN Person AS p BY pid ON d.PersonId = pid WHERE pid = '
documentId
'
A continuación se utilizan las tablasVisión comprometida para unir lasPerson
tablasDriversLicense
y en susid
camposPersonId
y documentos, respectivamente.
SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS cp ON d.PersonId = cp.metadata.id WHERE cp.metadata.id = '
documentId
'
A continuación, se devuelve elPersonId
número de índice (ordinal) de cada persona de laOwners.SecondaryOwners
lista de un documento de la tablaVehicleRegistration
.
SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = 'KM8SRDHF6EU074761'
Ejecución mediante programación mediante el controlador
Para aprender a ejecutar esta sentencia mediante programación con el controlador QLDB, consulte los siguientes tutoriales en Introducción al controlador: