

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

# Amazon QLDB 中的 PartiQL 命令
<a name="ql-reference.statements"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

PartiQL 擴展 SQL-92 以支援 Amazon Ion 資料格式的文件。Amazon QLDB 支援下列 PartiQL 命令。

若要了解如何控制在特定資料表上執行每個 PartiQL 命令的存取權，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**注意**  
QLDB 不支援所有 PartiQL 命令。
QLDB 中的所有 PartiQL 陳述式都受到交易限制，如 中所定義[Amazon QLDB 中的配額和限制](limits.md#limits.fixed)。
此參考提供您在 QLDB 主控台或 QLDB Shell 上手動執行的 PartiQL 陳述式的基本語法和使用範例。如需示範如何使用支援的程式設計語言執行類似陳述式的程式碼範例，請參閱 中的教學課程[驅動程式入門](getting-started-driver.md)。

## DDL 陳述式 （資料定義語言）
<a name="ql-functions.statements.ddl"></a>

*資料定義語言* (DDL) 是您用來管理資料庫物件的一組 PartiQL 陳述式，例如資料表和索引。您可以使用 DDL 來建立和捨棄這些物件。
+ [CREATE INDEX](ql-reference.create-index.md)
+ [CREATE TABLE](ql-reference.create-table.md)
+ [DROP INDEX](ql-reference.drop-index.md)
+ [DROP TABLE](ql-reference.drop-table.md)
+ [UNDROP 資料表](ql-reference.undrop-table.md)

## DML 陳述式 （資料處理語言）
<a name="ql-functions.statements.dml"></a>

*資料處理語言* (DML) 是您用來管理 QLDB 資料表中資料的一組 PartiQL 陳述式。您可使用 DML 陳述式新增、修改或刪除資料表中的資料。

支援下列 DML 和查詢語言陳述式：
+ [DELETE](ql-reference.delete.md)
+ [FROM (INSERT、Remove 或 SET)](ql-reference.from.md)
+ [INSERT](ql-reference.insert.md)
+ [SELECT](ql-reference.select.md)
+ [UPDATE](ql-reference.update.md)

# Amazon QLDB 中的 CREATE INDEX 命令
<a name="ql-reference.create-index"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `CREATE INDEX`命令為資料表上的文件欄位建立索引。

若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**重要**  
QLDB 需要索引才能有效率地查詢文件。如果沒有索引，QLDB 讀取文件時需要執行完整資料表掃描。這可能會導致大型資料表的效能問題，包括並行衝突和交易逾時。  
若要避免資料表掃描，您必須在索引欄位或文件 ID 上使用*等式*運算子 (`=` 或 `IN`) 搭配`WHERE`述詞子句執行陳述式。如需詳細資訊，請參閱[最佳化查詢效能](working.optimize.md)。

建立索引時請注意下列限制：
+ 索引只能在單一最上層欄位上建立。不支援複合、巢狀、唯一和以函數為基礎的索引。
+ 您可以在任何 [Ion 資料類型](ql-reference.data-types.md)上建立索引，包括 `list`和 `struct`。不過，無論 Ion 類型為何，您都只能依整個 Ion 值的相等性執行索引查詢。例如，使用 `list` 類型做為索引時，您無法透過清單中的一個項目進行索引查詢。
+ 只有在您使用等式述詞時，查詢效能才會獲得改善；例如， `WHERE indexedField = 123`或 `WHERE indexedField IN (456, 789)`。

  QLDB 不會遵守查詢述詞中的不等式。因此，不會實作範圍篩選掃描。
+ 索引欄位的名稱區分大小寫，最多可有 128 個字元。
+ QLDB 中的索引建立是非同步的。在非空白資料表上完成建立索引所需的時間，會因資料表大小而有所不同。如需詳細資訊，請參閱[管理索引](working.manage-indexes.md)。

**Topics**
+ [語法](#ql-reference.create-index.syntax)
+ [參數](#ql-reference.create-index.parameters)
+ [傳回值](#ql-reference.create-index.return)
+ [範例](#ql-reference.create-index.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.create-index.driver)

## 語法
<a name="ql-reference.create-index.syntax"></a>

```
CREATE INDEX ON table_name (field)
```

## 參數
<a name="ql-reference.create-index.parameters"></a>

***table\$1name***  
您要建立索引的資料表名稱。索資料表必須已存在。  
資料表名稱區分大小寫。

***欄位***  
要為其建立索引的文件欄位名稱。欄位必須是最上層屬性。  
索引欄位的名稱區分大小寫，最多可有 128 個字元。  
您可以在任何 [Amazon Ion 資料類型](ql-reference.data-types.md)上建立索引，包括 `list`和 `struct`。不過，無論 Ion 類型為何，您都只能依整個 Ion 值的相等性執行索引查詢。例如，使用 `list` 類型做為索引時，您無法透過清單中的一個項目進行索引查詢。

## 傳回值
<a name="ql-reference.create-index.return"></a>

`tableId` – 您建立索引之資料表的唯一 ID。

## 範例
<a name="ql-reference.create-index.examples"></a>

```
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
```

```
CREATE INDEX ON Vehicle (VIN)
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.create-index.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱*驅動程式入門*中的下列教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)

# Amazon QLDB 中的 CREATE TABLE 命令
<a name="ql-reference.create-table"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `CREATE TABLE`命令來建立新的資料表。

資料表具有沒有命名空間的簡單名稱。QLDB 支援開啟的內容，不會強制執行結構描述，因此您在建立資料表時不會定義屬性或資料類型。

**注意**  
若要了解如何控制在分類帳中執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.create-table.syntax)
+ [參數](#ql-reference.create-table.parameters)
+ [傳回值](#ql-reference.create-table.return)
+ [建立時標記資料表](#ql-reference.create-table.tagging)
+ [範例](#ql-reference.create-table.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.create-table.driver)

## 語法
<a name="ql-reference.create-table.syntax"></a>

```
CREATE TABLE table_name [ WITH (aws_tags = `{'key': 'value'}`) ]
```

## 參數
<a name="ql-reference.create-table.parameters"></a>

***table\$1name***  
要建立之資料表的唯一名稱。具有相同名稱的作用中資料表不得已存在。以下是命名限制：  
+ 只能包含 1-128 個英數字元或底線。
+ 第一個字元必須有字母或底線。
+ 可以包含其餘字元的英數字元和底線的任意組合。
+ 區分大小寫。
+ 不得為 QLDB PartiQL [保留字](ql-reference.reserved.md)。

**'*key*'： '*value*'**  
（選用） 建立期間要連接至資料表資源的標籤。每個標籤都定義為索引鍵/值對，其中索引鍵和值各自以單引號表示。每個鍵/值對都是在由反引號表示的 Amazon Ion 結構中定義。  
*建立時標記資料表目前僅支援`STANDARD`許可模式中的分類帳。*

## 傳回值
<a name="ql-reference.create-table.return"></a>

`tableId` – 您建立之資料表的唯一 ID。

## 建立時標記資料表
<a name="ql-reference.create-table.tagging"></a>

**注意**  
 建立時標記資料表目前僅支援`STANDARD`許可模式中的分類帳。

或者，您也可以在 `CREATE TABLE`陳述式中指定標籤來標記資料表資源。如需標籤的詳細資訊，請參閱[標記 Amazon QLDB 資源](tagging.md)。下列範例`Vehicle`會使用標籤 建立名為 的資料表`environment=production`。

```
CREATE TABLE Vehicle WITH (aws_tags = `{'environment': 'production'}`)
```

在建立時標記資料表需要存取 `qldb:PartiQLCreateTable`和 `qldb:TagResource`動作。若要進一步了解 QLDB 資源的許可，請參閱 [Amazon QLDB 如何與 IAM 搭配使用](security_iam_service-with-iam.md)。

藉由在建立時為資源建立標籤，您可以消除在資源建立後執行自訂標籤指令碼的必要。標記資料表之後，您可以根據這些標籤控制對資料表的存取。例如，您只能將完整存取權授予具有特定標籤的資料表。如需 JSON 政策範例，請參閱 [根據資料表標籤完整存取所有動作](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-full-tags)。

## 範例
<a name="ql-reference.create-table.examples"></a>

```
CREATE TABLE VehicleRegistration
```

```
CREATE TABLE Vehicle WITH (aws_tags = `{'environment': 'development'}`)
```

```
CREATE TABLE Vehicle WITH (aws_tags = `{'key1': 'value1', 'key2': 'value2'}`)
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.create-table.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱下列*入門驅動程式*中的教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)

# Amazon QLDB 中的 DELETE 命令
<a name="ql-reference.delete"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `DELETE`命令，透過建立新的文件最終修訂，在資料表中將作用中文件標記為已刪除。此最終修訂表示文件已刪除。此操作會結束文件的生命週期，這表示無法建立具有相同文件 ID 的進一步文件修訂。

此操作不可復原。您仍然可以使用 查詢已刪除文件的修訂歷史記錄[歷史記錄函數](working.history.md#working.history.function)。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.delete.syntax)
+ [參數](#ql-reference.delete.parameters)
+ [傳回值](#ql-reference.delete.return)
+ [範例](#ql-reference.delete.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.delete.driver)

## 語法
<a name="ql-reference.delete.syntax"></a>

```
DELETE FROM table_name [ AS table_alias ] [ BY id_alias ]
[ WHERE condition ]
```

## 參數
<a name="ql-reference.delete.parameters"></a>

***table\$1name***  
包含要刪除之資料的使用者資料表名稱。DML 陳述式僅在預設[使用者檢視](working.userdata.md)中受支援。每個陳述式只能在單一資料表上執行。

**AS *table\$1alias***  
（選用） 使用者定義的別名，範圍涵蓋要刪除的資料表。`AS` 關鍵字為選用。

**BY *id\$1alias***  
（選用） 使用者定義的別名，可繫結至結果集中每個文件的`id`中繼資料欄位。別名必須使用關鍵字在 `FROM`子句中宣告`BY`。當您想要在查詢預設使用者檢視時篩選[文件 ID](working.metadata.md) 時，此功能非常有用。如需詳細資訊，請參閱[使用 BY 子句查詢文件 ID](working.metadata.by-clause.md)。

**WHERE *condition***  
要刪除之文件的選取條件。

**注意**  
如果您省略 `WHERE`子句，則會刪除資料表中的所有文件。

## 傳回值
<a name="ql-reference.delete.return"></a>

`documentId` – 您刪除的每個文件的唯一 ID。

## 範例
<a name="ql-reference.delete.examples"></a>

```
DELETE FROM VehicleRegistration AS r
WHERE r.VIN = '1HVBBAANXWH544237'
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.delete.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱*驅動程式入門*中的下列教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)

# Amazon QLDB 中的 DROP INDEX 命令
<a name="ql-reference.drop-index"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `DROP INDEX`命令來刪除資料表上的索引。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.drop-index.syntax)
+ [參數](#ql-reference.drop-index.parameters)
+ [傳回值](#ql-reference.drop-index.return)
+ [範例](#ql-reference.drop-index.examples)

## 語法
<a name="ql-reference.drop-index.syntax"></a>

```
DROP INDEX "indexId" ON table_name WITH (purge = true)
```

**注意**  
所有`DROP INDEX`陳述式`WITH (purge = true)`都需要 子句，`true`目前唯一支援的值。  
關鍵字區分`purge`大小寫，且必須是所有小寫。

## 參數
<a name="ql-reference.drop-index.parameters"></a>

**"*indexId*"**  
要捨棄的索引的唯一 ID，以雙引號表示。

**ON *table\$1name***  
您要捨棄其索引的資料表名稱。

## 傳回值
<a name="ql-reference.drop-index.return"></a>

`tableId` – 您捨棄索引之資料表的唯一 ID。

## 範例
<a name="ql-reference.drop-index.examples"></a>

```
DROP INDEX "4tPW3fUhaVhDinRgKRLhGU" ON VehicleRegistration WITH (purge = true)
```

# Amazon QLDB 中的 DROP TABLE 命令
<a name="ql-reference.drop-table"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `DROP TABLE`命令來停用現有的資料表。您可以使用 [UNDROP 資料表](ql-reference.undrop-table.md)陳述式來重新啟用它。停用或重新啟用資料表不會影響其文件或索引。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.drop-table.syntax)
+ [參數](#ql-reference.drop-table.parameters)
+ [傳回值](#ql-reference.drop-table.return)
+ [範例](#ql-reference.drop-table.examples)

## 語法
<a name="ql-reference.drop-table.syntax"></a>

```
DROP TABLE table_name
```

## 參數
<a name="ql-reference.drop-table.parameters"></a>

***table\$1name***  
要停用的資料表名稱。資料表必須已經存在，且狀態為 `ACTIVE`。

## 傳回值
<a name="ql-reference.drop-table.return"></a>

`tableId` – 您停用之資料表的唯一 ID。

## 範例
<a name="ql-reference.drop-table.examples"></a>

```
DROP TABLE VehicleRegistration
```

# Amazon QLDB 中的 FROM (INSERT、REMOVE 或 SET) 命令
<a name="ql-reference.from"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，開頭為 的陳述式`FROM`是 PartiQL 延伸，可讓您在文件中插入和移除特定元素。您也可以使用此陳述式來更新文件中現有的元素，類似於 [UPDATE](ql-reference.update.md)命令。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.from.syntax)
+ [參數](#ql-reference.from.parameters)
+ [巢狀集合](#ql-reference.from.nested-collections)
+ [傳回值](#ql-reference.from.return)
+ [範例](#ql-reference.from.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.from.driver)

## 語法
<a name="ql-reference.from.syntax"></a>

**FROM-INSERT**

在現有文件中插入新的元素。若要將新的最上層文件插入資料表，您必須使用 [INSERT](ql-reference.insert.md)。

```
FROM table_name [ AS table_alias ] [ BY id_alias ]
[ WHERE condition ]
INSERT INTO element VALUE data [ AT key_name ]
```

**FROM-REMOVE**

移除文件中的現有元素，或移除整個最上層文件。後者與傳統[DELETE](ql-reference.delete.md)語法在語意上相同。

```
FROM table_name [ AS table_alias ] [ BY id_alias ]
[ WHERE condition ]
REMOVE element
```

**FROM-SET**

更新文件中的一或多個元素。如果元素不存在，則會插入。這在同義詞上與傳統[UPDATE](ql-reference.update.md)語法相同。

```
FROM table_name [ AS table_alias ] [ BY id_alias ]
[ WHERE condition ]
SET element = data [, element = data, ... ]
```

## 參數
<a name="ql-reference.from.parameters"></a>

***table\$1name***  
包含要修改之資料的使用者資料表名稱。DML 陳述式僅支援預設[使用者檢視](working.userdata.md)。每個陳述式只能在單一資料表上執行。  
在此子句中，您也可以包含一或多個巢狀在指定資料表中的集合。如需詳細資訊，請參閱[巢狀集合](#ql-reference.from.nested-collections)。

**AS *table\$1alias***  
（選用） 使用者定義的別名，範圍涵蓋要修改的資料表。用於 `SET`、`REMOVE``INSERT INTO`、 或 `WHERE`子句的所有資料表別名都必須在 `FROM`子句中宣告。`AS` 關鍵字為選用。

**BY *id\$1alias***  
（選用） 使用者定義的別名，可繫結至結果集中每個文件的`id`中繼資料欄位。別名必須使用關鍵字在 `FROM`子句中宣告`BY`。當您想要在查詢預設使用者檢視時篩選[文件 ID](working.metadata.md) 時，此功能非常有用。如需詳細資訊，請參閱[使用 BY 子句查詢文件 ID](working.metadata.by-clause.md)。

**WHERE *condition***  
要修改之文件的選擇條件。  
如果您省略 `WHERE`子句，則會修改資料表中的所有文件。

***元素***  
要建立或修改的文件元素。

***data***  
元素的新值。

**AT *key\$1name***  
在要修改的文件內新增的金鑰名稱。您必須指定對應的 `VALUE`以及金鑰名稱。這是在文件中插入`AT`特定位置的新值所必需。

## 巢狀集合
<a name="ql-reference.from.nested-collections"></a>

雖然您只能在單一資料表上執行 DML 陳述式，但您可以將該資料表中文件中的巢狀集合指定為其他來源。您為巢狀集合宣告的每個別名都可以在 `WHERE`子句和 `SET`、 `INSERT INTO`或 `REMOVE`子句中使用。

例如，下列陳述式的`FROM`來源同時包含`VehicleRegistration`資料表和巢狀`Owners.SecondaryOwners`結構。

```
FROM VehicleRegistration r, @r.Owners.SecondaryOwners o
WHERE r.VIN = '1N4AL11D75C109151' AND o.PersonId = 'abc123'
SET o.PersonId = 'def456'
```

此範例會更新`SecondaryOwners`清單中具有 `PersonId` 之 的特定元素，`VehicleRegistration`該清單`'abc123'`位於文件中具有 `VIN`之 `'1N4AL11D75C109151'`。此表達式可讓您依清單的值而非索引來指定清單的元素。

## 傳回值
<a name="ql-reference.from.return"></a>

`documentId` – 您更新或刪除的每個文件的唯一 ID。

## 範例
<a name="ql-reference.from.examples"></a>

修改文件中的 元素。如果元素不存在，則會插入。

```
FROM Vehicle AS v
WHERE v.VIN = '1N4AL11D75C109151' AND v.Color = 'Silver'
SET v.Color = 'Shiny Gray'
```

修改或插入系統指派的文件`id`中繼資料欄位上的 元素和篩選條件。

```
FROM Vehicle AS v BY v_id
WHERE v_id = 'documentId'
SET v.Color = 'Shiny Gray'
```

修改 文件內`Owners.SecondaryOwners`清單中*第一個*元素`PersonId`的欄位。

```
FROM VehicleRegistration AS r
WHERE r.VIN = '1N4AL11D75C109151'
SET r.Owners.SecondaryOwners[0].PersonId = 'abc123'
```

移除文件中的現有元素。

```
FROM Person AS p
WHERE p.GovId = '111-22-3333'
REMOVE p.Address
```

從資料表中移除整個文件。

```
FROM Person AS p
WHERE p.GovId = '111-22-3333'
REMOVE p
```

移除`VehicleRegistration`資料表中文件中`Owners.SecondaryOwners`清單*的第一個*元素。

```
FROM VehicleRegistration AS r
WHERE r.VIN = '1N4AL11D75C109151'
REMOVE r.Owners.SecondaryOwners[0]
```

在`Vehicle`資料表中的文件中插入 `{'Mileage':26500}` 做為最上層的名稱值對。

```
FROM Vehicle AS v 
WHERE v.VIN = '1N4AL11D75C109151'
INSERT INTO v VALUE 26500 AT 'Mileage'
```

在`VehicleRegistration`資料表中的文件`Owners.SecondaryOwners`欄位中附加`{'PersonId':'abc123'}`為名稱/值對。請注意， `Owners.SecondaryOwners` 必須已存在，且必須是清單資料類型，此陳述式才會有效。否則， 子`INSERT INTO`句中`AT`需要關鍵字。

```
FROM VehicleRegistration AS r 
WHERE r.VIN = '1N4AL11D75C109151'
INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' }
```

插入 `{'PersonId':'abc123'}`做為文件內現有`Owners.SecondaryOwners`清單中*的第一個*元素。

```
FROM VehicleRegistration AS r 
WHERE r.VIN = '1N4AL11D75C109151'
INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0
```

將多個名稱/值對附加到文件中的現有`Owners.SecondaryOwners`清單。

```
FROM VehicleRegistration AS r 
WHERE r.VIN = '1N4AL11D75C109151'
INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >>
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.from.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱*驅動程式入門*中的下列教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)

# Amazon QLDB 中的 INSERT 命令
<a name="ql-reference.insert"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `INSERT`命令將一或多個 Amazon Ion 文件新增至資料表。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.insert.syntax)
+ [參數](#ql-reference.insert.parameters)
+ [傳回值](#ql-reference.insert.return)
+ [範例](#ql-reference.insert.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.insert.driver)

## 語法
<a name="ql-reference.insert.syntax"></a>

插入單一文件。

```
INSERT INTO table_name VALUE document
```

插入多個文件。

```
INSERT INTO table_name << document, document, ... >>
```

## 參數
<a name="ql-reference.insert.parameters"></a>

***table\$1name***  
您要插入資料的 使用者資料表名稱。索資料表必須已存在。DML 陳述式僅在預設[使用者檢視](working.userdata.md)中受支援。

***文件***  
有效的 [QLDB 文件](ql-reference.docs.md)。您必須指定至少一個文件。多個文件必須以逗號分隔。  
文件必須以大括號表示 ( `{...}` )。  
文件中的每個欄位名稱都是區分大小寫的 Ion 符號，可由 PartiQL 中的*單*引號 (`'...'`) 表示。  
字串值也會在 PartiQL 中以*單*引號 (`'...'`) 表示。  
任何 Ion 常值都可以用反引號 () 表示``...``。

**注意**  
雙角括號 `<<...>>` ( ) 表示未排序的集合 （在 PartiQL 中稱為*包*)，只有在您想要插入多個文件時才需要。

## 傳回值
<a name="ql-reference.insert.return"></a>

`documentId` – 您插入的每個文件的唯一 ID。

## 範例
<a name="ql-reference.insert.examples"></a>

插入單一文件。

```
INSERT INTO VehicleRegistration VALUE
{
    'VIN' : 'KM8SRDHF6EU074761', --string
    'RegNum' : 1722, --integer
    'State' : 'WA',
    'City' : 'Kent',
    'PendingPenaltyTicketAmount' : 130.75, --decimal
    'Owners' : { --nested struct
        'PrimaryOwner' : { 'PersonId': '294jJ3YUoH1IEEm8GSabOs' },
        'SecondaryOwners' : [ --list of structs
            { 'PersonId' : '1nmeDdLo3AhGswBtyM1eYh' },
            { 'PersonId': 'IN7MvYtUjkp1GMZu0F6CG9' }
        ]
    },
    'ValidFromDate' : `2017-09-14T`, --Ion timestamp literal with day precision
    'ValidToDate' : `2020-06-25T`
}
```

此陳述式會傳回您插入的文件的唯一 ID，如下所示。

```
{
    documentId: "2kKuOPNB07D2iTPBrUTWGl"
}
```

插入多個文件。

```
INSERT INTO Person << 
{
    'FirstName' : 'Raul',
    'LastName' : 'Lewis',
    'DOB' : `1963-08-19T`,
    'GovId' : 'LEWISR261LL',
    'GovIdType' : 'Driver License',
    'Address' : '1719 University Street, Seattle, WA, 98109'
},
{
    'FirstName' : 'Brent',
    'LastName' : 'Logan',
    'DOB' : `1967-07-03T`,
    'GovId' : 'LOGANB486CG',
    'GovIdType' : 'Driver License',
    'Address' : '43 Stockert Hollow Road, Everett, WA, 98203'
},
{
    'FirstName' : 'Alexis',
    'LastName' : 'Pena',
    'DOB' : `1974-02-10T`,
    'GovId' : '744 849 301',
    'GovIdType' : 'SSN',
    'Address' : '4058 Melrose Street, Spokane Valley, WA, 99206'
}
>>
```

此陳述式會傳回您插入的每個文件的唯一 ID，如下所示。

```
{
    documentId: "6WXzLscsJ3bDWW97Dy8nyp"
},
{
    documentId: "35e0ToZyTGJ7LGvcwrkX65"
},
{
    documentId: "BVHPcH612o7JROQ4yP8jiH"
}
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.insert.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱*驅動程式入門*中的下列教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)

# Amazon QLDB 中的 SELECT 命令
<a name="ql-reference.select"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `SELECT`命令從一或多個資料表擷取資料。QLDB 中的每個`SELECT`查詢都會在交易中處理，並受到[交易逾時限制](limits.md#limits.fixed)。

結果的順序並不特定，而且每個`SELECT`查詢可能有所不同。您不應依賴結果順序來查詢 QLDB 中的任何查詢。

若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**警告**  
當您在沒有索引查詢的情況下在 QLDB 中執行查詢時，它會叫用完整資料表掃描。PartiQL 支援此類查詢，因為它與 SQL 相容。不過，*請勿*在 QLDB 中執行生產使用案例的資料表掃描。資料表掃描可能會導致大型資料表的效能問題，包括並行衝突和交易逾時。  
若要避免資料表掃描，您必須在索引欄位或文件 ID 上使用*等式*運算子，以`WHERE`述詞子句執行陳述式；例如， `WHERE indexedField = 123`或 `WHERE indexedField IN (456, 789)`。如需詳細資訊，請參閱[最佳化查詢效能](working.optimize.md)。

**Topics**
+ [語法](#ql-reference.select.syntax)
+ [參數](#ql-reference.select.parameters)
+ [聯結](#ql-reference.select.joins)
+ [巢狀查詢限制](#ql-reference.select.subqueries)
+ [範例](#ql-reference.select.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.select.driver)

## 語法
<a name="ql-reference.select.syntax"></a>

```
SELECT [ VALUE ] expression [ AS field_alias ] [, expression, ... ]
FROM source [ AS source_alias ] [ AT idx_alias ] [ BY id_alias ] [, source, ... ]
[ WHERE condition ]
```

## 參數
<a name="ql-reference.select.parameters"></a>

**VALUE**  
讓查詢傳回原始資料類型值的表達式限定詞，而不是以元組結構包裝的值。

***運算式***  
從`*`萬用字元形成的投影，或結果集中一或多個文件欄位的投影清單。一個表達式可以包含對 [PartiQL 函數](ql-functions.md) 的呼叫或由 [PartiQL 運算子](ql-operators.md) 修改的欄位。

**AS *field\$1alias***  
（選用） 用於最終結果集中的欄位的臨時使用者定義別名。`AS` 關鍵字為選用。  
如果您未為不是簡單欄位名稱的表達式指定別名，結果集會將預設名稱套用至該欄位。

**從*來源***  
要查詢的來源。目前唯一支援的來源是資料表名稱、資料表之間的[內部聯結](#ql-reference.select.joins)、巢狀`SELECT`查詢 （受 限制[巢狀查詢限制](#ql-reference.select.subqueries))，以及資料表的[歷史記錄函數](working.history.md)呼叫。  
您必須指定至少一個來源。多個來源必須以逗號分隔。

**AS *source\$1alias***  
（選用） 使用者定義的別名，範圍涵蓋要查詢的來源。在 `SELECT` OR `WHERE`子句中使用的所有來源別名都必須在子`FROM`句中宣告。`AS` 關鍵字為選用。

**AT *idx\$1alias***  
（選用） 使用者定義的別名，可繫結至來源清單中每個元素的索引 （順序） 數字。別名必須使用關鍵字在 `FROM`子句中宣告`AT`。

**BY *id\$1alias***  
（選用） 使用者定義的別名，可繫結至結果集中每個文件的`id`中繼資料欄位。別名必須使用關鍵字在 `FROM`子句中宣告`BY`。當您想要在查詢預設使用者檢視時投影或篩選[文件 ID](working.metadata.md) 時，此功能非常有用。如需詳細資訊，請參閱[使用 BY 子句查詢文件 ID](working.metadata.by-clause.md)。

**WHERE *condition***  
查詢的選擇條件和聯結條件 （如適用）。

**注意**  
如果您省略 `WHERE`子句，則會擷取資料表中的所有文件。

## 聯結
<a name="ql-reference.select.joins"></a>

目前僅支援內部聯結。您可以使用明確`INNER JOIN`子句撰寫內部聯結查詢，如下所示。在此語法中， `JOIN` 必須與 配對`ON`，且`INNER`關鍵字為選用。

```
SELECT expression
FROM table1 AS t1 [ INNER ] JOIN table2 AS t2
ON t1.element = t2.element
```

或者，您可以使用隱含語法撰寫內部聯結，如下所示。

```
SELECT expression
FROM table1 AS t1, table2 AS t2
WHERE t1.element = t2.element
```

## 巢狀查詢限制
<a name="ql-reference.select.subqueries"></a>

您可以在`SELECT`表達式和`FROM`來源內撰寫巢狀查詢 （子查詢）。主要限制是只有最外部的查詢可以存取全域資料庫環境。例如，假設您有一個具有資料表 `VehicleRegistration`和 的分類帳`Person`。下列巢狀查詢無效，因為內部`SELECT`會嘗試存取 `Person`。

```
SELECT r.VIN,
    (SELECT p.PersonId FROM Person AS p WHERE p.PersonId = r.Owners.PrimaryOwner.PersonId) AS PrimaryOwner
FROM VehicleRegistration AS r
```

而下列巢狀查詢是有效的。

```
SELECT r.VIN, (SELECT o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner
FROM VehicleRegistration AS r
```

## 範例
<a name="ql-reference.select.examples"></a>

下列查詢顯示基本`SELECT`所有萬用字元，其中包含使用 `IN`運算子的標準`WHERE`述詞子句。

```
SELECT * FROM Vehicle
WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
```

以下顯示具有字串篩選條件的`SELECT`投影。

```
SELECT FirstName, LastName, Address 
FROM Person 
WHERE Address LIKE '%Seattle%'
AND GovId = 'LEWISR261LL'
```

以下顯示可扁平化巢狀資料的關聯子查詢。請注意，這裡的`@`字元技術上是選用的。但它明確表示您想要巢狀在 中的`Owners`結構`VehicleRegistration`，而不是名為 的不同集合 `Owners`（如果有的話）。如需詳細資訊，請參閱 *使用資料和歷史記錄*一章[巢狀資料](working.userdata.md#working.userdata.nested)中的 。

```
SELECT 
    r.VIN, 
    o.SecondaryOwners
FROM
    VehicleRegistration AS r, @r.Owners AS o
WHERE
    r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
```

下列顯示`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')
```

以下顯示明確的內部聯結。

```
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')
```

以下顯示文件`id`中繼資料欄位的投影，使用 `BY`子句。

```
SELECT
    r_id,
    r.VIN
FROM
    VehicleRegistration AS r BY r_id
WHERE
    r_id = 'documentId'
```

下列使用 `BY`子句分別聯結其 `DriversLicense`和 文件`id`欄位上的 `PersonId`和 `Person`資料表。

```
SELECT * FROM DriversLicense AS d INNER JOIN Person AS p BY pid
ON d.PersonId = pid
WHERE pid = 'documentId'
```

下列使用 [遞交檢視](working.metadata.md#working.metadata.committed)來分別聯結其 `DriversLicense`和 文件`id`欄位上的 `PersonId`和 `Person`資料表。

```
SELECT * FROM DriversLicense AS d INNER JOIN _ql_committed_Person AS cp
ON d.PersonId = cp.metadata.id
WHERE cp.metadata.id = 'documentId'
```

下列 傳回資料表 中文件`Owners.SecondaryOwners`清單中每個人的 `PersonId`和 索引 （一般） 編號`VehicleRegistration`。

```
SELECT s.PersonId, owner_idx
FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx
WHERE r.VIN = 'KM8SRDHF6EU074761'
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.select.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱*驅動程式入門*中的下列教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)

# Amazon QLDB 中的 UPDATE 命令
<a name="ql-reference.update"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `UPDATE`命令來修改文件中一或多個元素的值。如果元素不存在，則會插入。

您也可以使用此命令在文件中明確插入和移除特定元素，類似於[FROM (INSERT、Remove 或 SET)](ql-reference.from.md)陳述式。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.update.syntax)
+ [參數](#ql-reference.update.parameters)
+ [傳回值](#ql-reference.update.return)
+ [範例](#ql-reference.update.examples)
+ [使用驅動程式以程式設計方式執行](#ql-reference.update.driver)

## 語法
<a name="ql-reference.update.syntax"></a>

**UPDATE-SET**

更新文件中的一或多個元素。如果元素不存在，則會插入。這在語意上與 [FROM-SET](ql-reference.from.md) 陳述式相同。

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
SET element = data [, element = data, ... ]
[ WHERE condition ]
```

**UPDATE-INSERT**

在現有文件中插入新的元素。若要將新的最上層文件插入資料表，您必須使用 [INSERT](ql-reference.insert.md)。

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
INSERT INTO element VALUE data [ AT key_name ]
[ WHERE condition ]
```

**UPDATE-REMOVE**

移除文件中的現有元素，或移除整個最上層文件。後者在語意上與傳統[DELETE](ql-reference.delete.md)語法相同。

```
UPDATE table_name [ AS table_alias ] [ BY id_alias ]
REMOVE element
[ WHERE condition ]
```

## 參數
<a name="ql-reference.update.parameters"></a>

***table\$1name***  
包含要修改之資料的使用者資料表名稱。DML 陳述式僅支援預設[使用者檢視](working.userdata.md)。每個陳述式只能在單一資料表上執行。

**AS *table\$1alias***  
（選用） 使用者定義的別名，範圍涵蓋要更新的資料表。`AS` 關鍵字為選用。

**BY *id\$1alias***  
（選用） 使用者定義的別名，可繫結至結果集中每個文件的`id`中繼資料欄位。別名必須使用 `BY`關鍵字在 `UPDATE`子句中宣告。當您想要在查詢預設使用者檢視時篩選[文件 ID](working.metadata.md) 時，此功能非常有用。如需詳細資訊，請參閱[使用 BY 子句查詢文件 ID](working.metadata.by-clause.md)。

***元素***  
要建立或修改的文件元素。

***data***  
元素的新值。

**AT *key\$1name***  
在要修改的文件內新增的金鑰名稱。您必須指定對應的 `VALUE`以及金鑰名稱。這是在文件中插入`AT`特定位置的新值所必需。

**WHERE *condition***  
要修改之文件的選擇條件。

**注意**  
如果您省略 `WHERE`子句，則會修改資料表中的所有文件。

## 傳回值
<a name="ql-reference.update.return"></a>

`documentId` – 您更新的每個文件的唯一 ID。

## 範例
<a name="ql-reference.update.examples"></a>

更新文件中的欄位。如果 欄位不存在，則會插入。

```
UPDATE Person AS p
SET p.LicenseNumber = 'HOLLOR123ZZ'
WHERE p.GovId = '111-22-3333'
```

在系統指派的文件`id`中繼資料欄位中篩選。

```
UPDATE Person AS p BY pid
SET p.LicenseNumber = 'HOLLOR123ZZ'
WHERE pid = 'documentId'
```

覆寫整個文件。

```
UPDATE Person AS p
SET p = {
    'FirstName' : 'Rosemarie',
    'LastName' : 'Holloway',
    'DOB' : `1977-06-18T`,
    'GovId' : '111-22-3333',
    'GovIdType' : 'Driver License',
    'Address' : '4637 Melrose Street, Ellensburg, WA, 98926'
}
WHERE p.GovId = '111-22-3333'
```

修改 文件內`Owners.SecondaryOwners`清單中*第一個*元素`PersonId`的欄位。

```
UPDATE VehicleRegistration AS r
SET r.Owners.SecondaryOwners[0].PersonId = 'abc123'
WHERE r.VIN = '1N4AL11D75C109151'
```

在`Vehicle`資料表中的文件中插入 `{'Mileage':26500}` 做為最上層的名稱值對。

```
UPDATE Vehicle AS v
INSERT INTO v VALUE 26500 AT 'Mileage'
WHERE v.VIN = '1N4AL11D75C109151'
```

在`VehicleRegistration`資料表中的文件`Owners.SecondaryOwners`欄位中，`{'PersonId':'abc123'}`附加為名稱值對。請注意， `Owners.SecondaryOwners` 必須已存在，且必須是清單資料類型，此陳述式才會有效。否則， 子`INSERT INTO`句中`AT`需要關鍵字。

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' }
WHERE r.VIN = '1N4AL11D75C109151'
```

插入 `{'PersonId':'abc123'}`做為文件內現有`Owners.SecondaryOwners`清單中*的第一個*元素。

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0
WHERE r.VIN = '1N4AL11D75C109151'
```

將多個名稱/值對附加到文件中的現有`Owners.SecondaryOwners`清單。

```
UPDATE VehicleRegistration AS r
INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >>
WHERE r.VIN = '1N4AL11D75C109151'
```

移除文件中的現有元素。

```
UPDATE Person AS p
REMOVE p.Address
WHERE p.GovId = '111-22-3333'
```

從資料表中移除整個文件。

```
UPDATE Person AS p
REMOVE p
WHERE p.GovId = '111-22-3333'
```

移除`VehicleRegistration`資料表中文件中`Owners.SecondaryOwners`清單*的第一個*元素。

```
UPDATE VehicleRegistration AS r
REMOVE r.Owners.SecondaryOwners[0]
WHERE r.VIN = '1N4AL11D75C109151'
```

## 使用驅動程式以程式設計方式執行
<a name="ql-reference.update.driver"></a>

若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式，請參閱*驅動程式入門*中的下列教學課程：
+ Java： [快速入門教學課程](driver-quickstart-java.md) \$1 [技術指南參考](driver-cookbook-java.md)
+ .NET： [快速入門教學課程](driver-quickstart-dotnet.md) \$1 [技術指南參考](driver-cookbook-dotnet.md)
+ Go： [快速入門教學課程](driver-quickstart-golang.md) \$1 [技術指南參考](driver-cookbook-golang.md)
+ Node.js： [快速入門教學課程](driver-quickstart-nodejs.md) \$1 [技術指南參考](driver-cookbook-nodejs.md)
+ Python： [快速入門教學課程](driver-quickstart-python.md) \$1 [技術指南參考](driver-cookbook-python.md)

# Amazon QLDB 中的 UNDROP TABLE 命令
<a name="ql-reference.undrop-table"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

在 Amazon QLDB 中，使用 `UNDROP TABLE`命令來重新啟用您先前捨棄的資料表 （即停用）。停用或重新啟用資料表不會影響其文件或索引。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [語法](#ql-reference.undrop-table.syntax)
+ [參數](#ql-reference.undrop-table.parameters)
+ [傳回值](#ql-reference.undrop-table.return)
+ [範例](#ql-reference.undrop-table.examples)

## 語法
<a name="ql-reference.undrop-table.syntax"></a>

```
UNDROP TABLE "tableId"
```

## 參數
<a name="ql-reference.undrop-table.parameters"></a>

**"*tableId*"**  
要重新啟動之資料表的唯一 ID，以雙引號表示。  
資料表先前必須已捨棄，這表示它存在於[系統目錄資料表](working.catalog.md)中`information_schema.user_tables`，且狀態為 `INACTIVE`。也必須沒有具有相同名稱的作用中現有資料表。

## 傳回值
<a name="ql-reference.undrop-table.return"></a>

`tableId` – 您重新啟動之資料表的唯一 ID。

## 範例
<a name="ql-reference.undrop-table.examples"></a>

```
UNDROP TABLE "5PLf9SXwndd63lPaSIa0O6"
```