查詢您的資料 - Amazon Quantum Ledger 資料庫 (Amazon QLDB)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

查詢您的資料

重要

支援結束通知:現有客戶將能夠使用 Amazon,QLDB直到 2025 年 7 月 31 日終止支援為止。有關更多詳細信息,請參閱將 Amazon QLDB 分類帳遷移到 Amazon Aurora 郵政. SQL

戶視圖僅返回用戶數据的最新未刪除版本。這是 Amazon 的默認視圖QLDB。這表示當您只想查詢資料時,不需要特殊限定元。

如需有關下列查詢範例語法和參數的詳細資訊,請參閱 Amazon QLDB PartiQL 參考資料SELECT中的。

基本查詢

基本SELECT查詢會傳回您插入到表格中的文件。

警告

當您在中執行查詢時QLDB沒有索引查閱,它會叫用完整資料表掃描。PartiQL 支持這樣的查詢,因為它是SQL兼容的。但是,請勿針對中的生產使用案例執行表格掃描QLDB。資料表掃描可能會造成大型資料表的效能問題,包括並行衝突和交易逾時。

若要避免資料表掃描,您必須在索引欄位或文件 ID 上使用相等運算子來執行具有述WHERE詞子句的陳述式;例如,WHERE indexedField = 123WHERE indexedField IN (456, 789)。如需詳細資訊,請參閱 最佳化查詢效能

下列查詢會顯示您先前插入的車輛登記文件的結果使用索引建立表格並插入文件。結果的順序不是特定的,並且每個SELECT查詢可能會有所不同。您不應該依賴於QLDB.

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" }
重要

在 PartiQL 中,您可以使用單引號來表示資料操作語言 (DML) 或查詢陳述式中的字串。但是QLDB控制台和 QLDB shell 會以 Amazon Ion 文本格式返回查詢結果,因此您會看到用雙引號括起來的字符串。

此語法可讓 PartiQL 查詢語言維持SQL相容性,而 Amazon Ion 文字格式則可維持JSON相容性。

投影和濾波器

您可以進行預測(目標SELECT)和其他標準過濾器(WHERE子句)。下面的查詢返回從VehicleRegistration表中的文檔字段的子集。它會根據以下條件篩選車輛:

  • 字符串過濾器-它在西雅圖註冊。

  • 十進制過濾器 — 它的待處罰單金額小於100.0

  • 日期篩選器 — 註冊日期在 2019 年 9 月 4 日或之後有效。

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" }] } }

聯結

您也可以編寫內部聯接查詢。以下示例顯示了一個隱含的內部聯接查詢,該查詢返回所有註冊文件以及已註冊車輛的屬性。

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" }

或者,您可以在顯式語法中編寫相同的內部連接查詢,如下所示。

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

嵌套數據

您可以在中使用 PartiQL QLDB 來查詢文件中的巢狀資料。下列範例顯示扁平化巢狀資料的相關子查詢。在這裡,@字符在技術上是可選的。但它明確表明你想要結OwnersVehicleRegistration,而不是名為的不同集合Owners(如果存在的話)。

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: [] }

以下顯示SELECT清單中的子查詢,該子查詢專案巢狀資料 (除了內部關連外)。

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"] }

Owners.SecondaryOwners列查詢會傳回VehicleRegistration文件清單中每個人員的PersonId與索引 (序數) 編號。

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
}

若要瞭解如何查詢文件中繼資料,請繼續執行查詢文件元資料