Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Abfragen Ihrer Daten
In der Benutzeransicht wird nur die letzte, nicht gelöschte Version Ihrer Benutzerdaten angezeigt. Dies ist die Standardansicht in Amazon QLDB. Dies bedeutet, dass keine speziellen Kriterien erforderlich sind, wenn Sie nur Ihre Daten abfragen möchten.
Einzelheiten zur Syntax und zu den Parametern der folgenden Abfragebeispiele finden SieSELECT in der Amazon QLDB PartiQL-Referenz.
Grundlegende Abfragen
Grundlegende SELECT
-Abfragen geben die Dokumente zurück, die Sie in die Tabelle eingefügt haben.
Warnung
Wenn Sie eine Abfrage in QLDB ohne indizierte Suche ausführen, wird ein vollständiger Tabellenscan aufgerufen. PartiQL unterstützt solche Abfragen, da es SQL-kompatibel ist. Führen Sie jedoch keine Tabellenscans für produktive Anwendungsfälle in QLDB aus. Tabellenscans können bei großen Tabellen zu Leistungsproblemen führen, einschließlich Parallelitätskonflikten und Transaktions-Timeouts.
Um Tabellenscans zu vermeiden, müssen Sie Anweisungen mit einerWHERE
Prädikatklausel ausführen, die einen Gleichheitsoperator für ein indiziertes Feld oder eine Dokument-ID verwenden, z. B.WHERE indexedField = 123
oderWHERE indexedField IN (456, 789)
. Weitere Informationen finden Sie unter Optimieren der Abfrageleistung.
Die folgenden Abfragen zeigen Ergebnisse für die Fahrzeugscheine, die Sie zuvor eingegeben habenTabellen mit Indizes erstellen und Dokumente einfügen. Die Reihenfolge der Ergebnisse ist nicht spezifisch und kann für jedeSELECT
Abfrage variieren. Sie sollten sich bei keiner Abfrage in QLDB auf die Reihenfolge der Ergebnisse verlassen.
SELECT * FROM VehicleRegistration WHERE LicensePlateNumber IN ('LEWISR261LL', 'CA762X')
{
VIN: "1N4AL11D75C109151",
LicensePlateNumber: "LEWISR261LL",
State: "WA",
City: "Seattle",
PendingPenaltyTicketAmount: 90.25,
ValidFromDate: 2017-08-21T,
ValidToDate: 2020-05-11T,
Owners: {
PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" },
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
}
},
{
VIN: "KM8SRDHF6EU074761",
LicensePlateNumber: "CA762X",
State: "WA",
City: "Kent",
PendingPenaltyTicketAmount: 130.75,
ValidFromDate: 2017-09-14T,
ValidToDate: 2020-06-25T,
Owners: {
PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" },
SecondaryOwners: []
}
}
SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{
VIN: "1N4AL11D75C109151",
Type: "Sedan",
Year: 2011,
Make: "Audi",
Model: "A5",
Color: "Silver"
},
{
VIN: "KM8SRDHF6EU074761",
Type: "Sedan",
Year: 2015,
Make: "Tesla",
Model: "Model S",
Color: "Blue"
}
Wichtig
In PartiQL verwenden Sie einfache Anführungszeichen, um Zeichenfolgen in der Data Manipulation Language (DML) oder in Abfrageanweisungen zu bezeichnen. Die QLDB-Konsole und die QLDB-Shell geben Abfrageergebnisse jedoch im Amazon Ion-Textformat zurück, sodass Sie Zeichenfolgen in doppelten Anführungszeichen sehen.
Diese Syntax ermöglicht es der PartiQL-Abfragesprache, die SQL-Kompatibilität aufrechtzuerhalten, und dem Amazon Ion-Textformat, um die JSON-Kompatibilität aufrechtzuerhalten.
Projektionen und Filter
Sie können Projektionen (gezieltSELECT
) und andere Standardfilter (WHERE
Klauseln) durchführen. Die folgende Abfrage gibt eine Teilmenge der Dokumentfelder aus der VehicleRegistration
-Tabelle zurück. Sie filtert nach Fahrzeugen mit den folgenden Kriterien:
-
Zeichenkettenfilter — Er ist in Seattle registriert.
-
Dezimalfilter — Der Betrag eines ausstehenden Straftickets ist geringer als
100.0
. -
Datumsfilter — Es hat ein Registrierungsdatum, das am oder nach dem 4. September 2019 gültig ist.
SELECT r.VIN, r.PendingPenaltyTicketAmount, r.Owners FROM VehicleRegistration AS r WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761') AND r.City = 'Seattle' --string AND r.PendingPenaltyTicketAmount < 100.0 --decimal AND r.ValidToDate >= `2019-09-04T` --timestamp with day precision
{
VIN: "1N4AL11D75C109151",
PendingPenaltyTicketAmount: 90.25,
Owners: {
PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" },
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
}
}
Joins
Sie können auch innere Join-Abfragen schreiben. Das folgende Beispiel zeigt eine implizite innere Join-Abfrage, die alle Zulassungsdokumente zusammen mit den Attributen der registrierten Fahrzeuge zurückgibt.
SELECT * FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{
VIN: "1N4AL11D75C109151",
LicensePlateNumber: "LEWISR261LL",
State: "WA",
City: "Seattle",
PendingPenaltyTicketAmount: 90.25,
ValidFromDate: 2017-08-21T,
ValidToDate: 2020-05-11T,
Owners: {
PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" },
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
},
Type: "Sedan",
Year: 2011,
Make: "Audi",
Model: "A5",
Color: "Silver"
},
{
VIN: "KM8SRDHF6EU074761",
LicensePlateNumber: "CA762X",
State: "WA",
City: "Kent",
PendingPenaltyTicketAmount: 130.75,
ValidFromDate: 2017-09-14T,
ValidToDate: 2020-06-25T,
Owners: {
PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" },
SecondaryOwners: []
},
Type: "Sedan",
Year: 2015,
Make: "Tesla",
Model: "Model S",
Color: "Blue"
}
Oder Sie können dieselbe innere Join-Abfrage in der folgenden expliziten Syntax schreiben.
SELECT * FROM VehicleRegistration AS r INNER JOIN Vehicle AS v ON r.VIN = v.VIN WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
Nested data
Sie können PartiQL in QLDB verwenden, um verschachtelte Daten in Dokumenten abzufragen. Das folgende Beispiel zeigt eine korrelierte Unterabfrage, die verschachtelte Daten vereinfacht. Das Zeichen @
ist hier technisch optional. Es gibt jedoch explizit an, dass Sie die Owners
-Struktur innerhalb von VehicleRegistration
haben möchten, und nicht eine andere Sammlung mit dem Namen Owners
(sofern vorhanden).
SELECT r.VIN, o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{
VIN: "1N4AL11D75C109151",
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
},
{
VIN: "KM8SRDHF6EU074761",
SecondaryOwners: []
}
Das folgende Beispiel zeigt eine Unterabfrage in der SELECT
-Liste, die verschachtelte Daten projiziert, zusätzlich zu einem inneren Join.
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')
{
Make: "Audi",
Model: "A5",
PrimaryOwner: ["294jJ3YUoH1IEEm8GSabOs"]
},
{
Make: "Tesla",
Model: "Model S",
PrimaryOwner: ["IN7MvYtUjkp1GMZu0F6CG9"]
}
Die folgende Abfrage gibt diePersonId
und Indexnummer (Ordinalzahl) jeder Person in derOwners.SecondaryOwners
Liste für einVehicleRegistration
Dokument zurück.
SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = '1N4AL11D75C109151'
{
PersonId: "5Ufgdlnj06gF5CWcOIu64s",
owner_idx: 0
}
Weitere Informationen zur Abfrage Ihrer Dokumentmetadaten finden Sie unter Metadaten von Dokumenten abfragen.