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.
SELECTcomando en Amazon QLDB
importante
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte Migración de un Amazon QLDB Ledger a Amazon Aurora SQL Postgre
En AmazonQLDB, usa el SELECT
comando para recuperar datos de una o más tablas. Cada SELECT
consulta 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 cada consulta SELECT
. No debes confiar en el orden de los resultados al ingresar ninguna consulta. QLDB
Para obtener información sobre cómo controlar el acceso para ejecutar este comando PartiQL en tablas específicas, consulte Cómo empezar con el modo de permisos estándar en Amazon QLDB.
aviso
Cuando ejecutas una consulta QLDB sin una búsqueda indexada, se invoca un escaneo completo de la tabla. PartiQL admite este tipo de consultas porque es SQL compatible. Sin embargo, no ejecute escaneos de tablas para casos de uso de producción enQLDB. 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 escaneado de tablas, debe ejecutar las instrucciones con una cláusula de predicado WHERE
usando un operador de igualdad en un campo indexado o en un ID de documento, por ejemplo WHERE indexedField = 123
o WHERE 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 incluir el valor en una estructura de tupla.
expression
-
Una proyección formada a partir del 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 de 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 finales. La palabra clave
AS
es 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.
- FROM
source
-
Un origen que se va a consultar. Los únicos orígenes admitidos actualmente son los nombres de las tablas, las combinaciones internas entre tablas, las consultas
SELECT
anidadas (sujetas a Limitaciones de consultas anidadas) y las llamadas a las funciones del historial de una tabla.Debe especificar al menos un origen. Los múltiples orígenes deben ir separados por comas.
- AS
source_alias
-
(Opcional) Un alias definido por el usuario que se extiende a lo largo de del origen que se va a consultar. Todos los alias de origen que se utilizan en las cláusulas
SELECT
OWHERE
deben declararse en la cláusulaFROM
. La palabra claveAS
es opcional. - AT
idx_alias
-
(Opcional) Un alias definido por el usuario que enlaza con el número de índice (ordinal) de cada elemento de una lista del origen. El alias debe declararse en la cláusula
FROM
mediante la palabra claveAT
. - BY
id_alias
-
(Opcional) Un alias definido por el usuario que se enlaza con el campo de metadatos
id
de cada documento del conjunto de resultados. El alias debe declararse en la cláusulaFROM
mediante la palabra claveBY
. Esto resulta útil cuando se desea proteger o filtrar por identificador del documento al consultar la vista de usuario predeterminada. Para obtener más información, consulte Uso de la cláusula BY para consultar el identificador del documento. - WHERE
condition
-
Los criterios de selección y los criterios de combinación (si procede) de la consulta.
nota
Si omite la cláusula WHERE
, se recuperarán todos los elementos de la tabla.
Uniones
Actualmente solo se admiten combinaciones internas. Puede escribir consultas de combinación internas mediante la cláusula INNER JOIN
explícita, de la siguiente manera. En esta sintaxis, JOIN
debe combinarse con ON
y la palabra clave INNER
es opcional.
SELECT expression
FROM table1 AS t1 [ INNER ] JOIN table2 AS t2
ON t1.element
= t2.element
O bien, puede escribir combinaciones 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 de las expresiones SELECT
y los orígenes FROM
. 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 mayor con tablas VehicleRegistration
y Person
. La siguiente consulta anidada no es válida porque SELECT
interno intenta acceder a Person
.
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ásico SELECT
todos con una cláusula de predicado WHERE
estándar que utiliza el operador IN
.
SELECT * FROM Vehicle
WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
A continuación se muestran las proyecciones SELECT
con un 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 datos anidados. Tenga en cuenta que, en este caso, el carácter @
es técnicamente opcional. Sin embargo, indica de forma explícita que desea la estructura Owners
que está anidada en VehicleRegistration
, y no una recopilación diferente denominada Owners
(si existiera). Para obtener más contexto, consulte Datos anidados en el capítulo Cómo 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 la lista SELECT
que proyecta datos anidados, además de una combinació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 combinació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 de metadatos id
del documento, utilizando la cláusula BY
.
SELECT
r_id,
r.VIN
FROM
VehicleRegistration AS r BY r_id
WHERE
r_id = 'documentId
'
A continuación, se utiliza la cláusula BY
para combinar las tablas DriversLicense
y Person
en sus campos PersonId
y id
del documento, 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 Vista confirmada para combinar las tablas DriversLicense
y Person
en sus campos PersonId
y id
del documento, respectivamente.
SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS cp
ON d.PersonId = cp.metadata.id
WHERE cp.metadata.id = 'documentId
'
Lo siguiente devuelve el PersonId
y el número de índice (ordinal) de cada persona de la lista Owners.SecondaryOwners
de un documento de la tabla VehicleRegistration
.
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 con el controlador
Para obtener información sobre cómo ejecutar esta sentencia mediante programación mediante el QLDB controlador, consulte los siguientes tutoriales en Introducción al controlador:
-
Java: Tutorial de inicio rápido | Referencia de libro de recetas
-
.NET: Tutorial de inicio rápido | Referencia de libro de recetas
-
Go: Tutorial de inicio rápido | Referencia de libro de recetas
-
Node.js: Tutorial de inicio rápido | Referencia de libro de recetas
-
Python: Tutorial de inicio rápido | Referencia de libro de recetas