Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
SELECTcomando in Amazon QLDB
Importante
Avviso di fine del supporto: i clienti esistenti potranno utilizzare Amazon QLDB fino alla fine del supporto il 31/07/2025. Per ulteriori dettagli, consulta Migrare un Amazon QLDB Ledger ad Amazon Aurora Postgre
In AmazonQLDB, usa il SELECT
comando per recuperare i dati da una o più tabelle. Ogni SELECT
richiesta in entrata QLDB viene elaborata in una transazione ed è soggetta a un limite di timeout della transazione.
L'ordine dei risultati non è specifico e può variare per ogni SELECT
query. Non dovresti fare affidamento sull'ordine dei risultati per nessuna query inQLDB.
Per informazioni su come controllare l'accesso per eseguire questo comando PartiQL su tabelle specifiche, vedere. Guida introduttiva alla modalità di autorizzazione standard in Amazon QLDB
avvertimento
Quando si esegue una query QLDB senza una ricerca indicizzata, viene richiamata una scansione completa della tabella. PartiQL supporta tali query perché è compatibile. SQL Tuttavia, non eseguite scansioni di tabelle per casi d'uso di produzione in. QLDB Le scansioni delle tabelle possono causare problemi di prestazioni su tabelle di grandi dimensioni, inclusi conflitti di concorrenza e timeout delle transazioni.
Per evitare le scansioni delle tabelle, è necessario eseguire istruzioni con una clausola di WHERE
predicato utilizzando un operatore di uguaglianza su un campo indicizzato o un ID di documento; ad esempio, o. WHERE indexedField = 123
WHERE indexedField IN (456, 789)
Per ulteriori informazioni, consulta Ottimizzazione delle prestazioni delle query.
Argomenti
Sintassi
SELECT [ VALUE ]
expression
[ ASfield_alias
] [,expression
, ... ] FROMsource
[ ASsource_alias
] [ ATidx_alias
] [ BYid_alias
] [,source
, ... ] [ WHEREcondition
]
Parametri
- VALUE
-
Un qualificatore per l'espressione che fa sì che la query restituisca il valore del tipo di dati non elaborato, anziché il valore racchiuso in una struttura a tuple.
expression
-
Una proiezione formata dal carattere
*
jolly o da un elenco di proiezione di uno o più campi del documento del set di risultati. Un'espressione può essere costituita da chiamate a Funzioni PartiQL o da campi modificati da Operatori PartiQL. - AS
field_alias
-
(Facoltativo) Un alias temporaneo definito dall'utente per il campo utilizzato nel set di risultati finale. La
AS
parola chiave è facoltativa.Se non si specifica un alias per un'espressione che non è un semplice nome di campo, il set di risultati applica un nome predefinito a quel campo.
- FROM
source
-
Una fonte da interrogare. Le uniche fonti attualmente supportate sono i nomi delle tabelle, i join interni tra le tabelle, le
SELECT
query annidate (soggette aLimitazioni delle query annidate) e le chiamate alle funzioni di cronologia per una tabella.È necessario specificare almeno una fonte. Le fonti multiple devono essere separate da virgole.
- AS
source_alias
-
(Facoltativo) Un alias definito dall'utente che si estende su una fonte da interrogare. Tutti gli alias di origine utilizzati nella clausola
SELECT
OR devono essere dichiarati nellaWHERE
clausola.FROM
LaAS
parola chiave è facoltativa. - AT
idx_alias
-
(Facoltativo) Un alias definito dall'utente che si collega al numero di indice (ordinale) di ogni elemento all'interno di un elenco dall'origine. L'alias deve essere dichiarato nella clausola utilizzando la
FROM
parola chiave.AT
- BY
id_alias
-
(Facoltativo) Un alias definito dall'utente che si collega al campo dei
id
metadati di ogni documento nel set di risultati. L'alias deve essere dichiarato nella clausola utilizzando laFROM
parola chiave.BY
Ciò è utile quando si desidera proiettare o filtrare l'ID del documento durante l'interrogazione della visualizzazione utente predefinita. Per ulteriori informazioni, consulta Utilizzo della clausola BY per interrogare l'ID del documento. - WHERE
condition
-
I criteri di selezione e i criteri di unione (se applicabili) per l'interrogazione.
Nota
Se si WHERE
omette la clausola, vengono recuperati tutti i documenti della tabella.
Join
Attualmente sono supportati solo i join interni. È possibile scrivere query di inner join utilizzando la INNER JOIN
clausola esplicita, come segue. In questa sintassi, JOIN
deve essere abbinato a e la parola chiave è ON
facoltativa. INNER
SELECT
expression
FROM table1 AS t1 [ INNER ] JOIN table2 AS t2 ON t1.element
= t2.element
In alternativa, è possibile scrivere join interni utilizzando la sintassi implicita, come segue.
SELECT
expression
FROM table1 AS t1, table2 AS t2 WHERE t1.element
= t2.element
Limitazioni delle query annidate
È possibile scrivere interrogazioni annidate (sottoquery) all'interno SELECT
di espressioni e sorgenti. FROM
La restrizione principale è che solo la query più esterna può accedere all'ambiente globale del database. Si supponga, ad esempio, di disporre di un registro con tabelle e. VehicleRegistration
Person
La seguente query annidata non è valida perché quella interna SELECT
tenta di accedere. Person
SELECT r.VIN, (SELECT p.PersonId FROM Person AS p WHERE p.PersonId = r.Owners.PrimaryOwner.PersonId) AS PrimaryOwner FROM VehicleRegistration AS r
La seguente interrogazione annidata è invece valida.
SELECT r.VIN, (SELECT o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r
Esempi
La seguente query mostra un carattere jolly di base SELECT
con una clausola di WHERE
predicato standard che utilizza l'operatore. IN
SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
Di seguito vengono illustrate le SELECT
proiezioni con un filtro a stringa.
SELECT FirstName, LastName, Address FROM Person WHERE Address LIKE '%Seattle%' AND GovId = 'LEWISR261LL'
Di seguito viene mostrata una sottoquery correlata che appiattisce i dati annidati. Nota che qui il @
carattere è tecnicamente facoltativo. Ma indica esplicitamente che si desidera la Owners
struttura annidata all'internoVehicleRegistration
, non una raccolta con nome diverso Owners
(se ne esistesse una). Per un contesto più approfondito, Dati annidati consultate il capitolo Lavorare con dati e cronologia.
SELECT r.VIN, o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
Di seguito viene mostrata una sottoquery nell'SELECT
elenco che proietta dati annidati e un inner join implicito.
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')
Di seguito viene illustrato un inner join esplicito.
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')
Quanto segue mostra una proiezione del campo di id
metadati del documento, utilizzando la clausola. BY
SELECT r_id, r.VIN FROM VehicleRegistration AS r BY r_id WHERE r_id = '
documentId
'
Di seguito viene utilizzata la BY
clausola per unire le Person
tabelle DriversLicense
e rispettivamente nei relativi campi e nel relativo PersonId
campo del documento. id
SELECT * FROM DriversLicense AS d INNER JOIN Person AS p BY pid ON d.PersonId = pid WHERE pid = '
documentId
'
Di seguito viene utilizzata la Vista impegnata per unire rispettivamente i campi DriversLicense
e le Person
tabelle nei rispettivi id
campi PersonId
e in quelli del documento.
SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS cp ON d.PersonId = cp.metadata.id WHERE cp.metadata.id = '
documentId
'
Quanto segue restituisce PersonId
il numero di indice (ordinale) di ogni persona nell'Owners.SecondaryOwners
elenco di un documento nella tabellaVehicleRegistration
.
SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = 'KM8SRDHF6EU074761'
Esecuzione a livello di codice utilizzando il driver
Per informazioni su come eseguire questa istruzione a livello di codice utilizzando il QLDB driver, consulta i seguenti tutorial in Guida introduttiva al driver:
-
Java: | Tutorial di avvio rapido Riferimento al libro di cucina
-
.NET: Tutorial di avvio rapido | Riferimento al libro di cucina
-
Vai: Tutorial di avvio rapido | Riferimento al libro di cucina
-
Node.js: Tutorial di avvio rapido | Riferimento al libro di cucina
-
Python: | Tutorial di avvio rapido Riferimento al libro di cucina