

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.

# PartiQL-Anweisungen für DynamoDB
<a name="ql-reference.statements"></a>

Amazon DynamoDB unterstützt die folgenden PartiQL-Anweisungen.

**Anmerkung**  
DynamoDB unterstützt nicht alle PartiQL-Anweisungen.  
Diese Referenz enthält grundlegende Syntax- und Verwendungsbeispiele für PartiQL-Anweisungen, die Sie manuell mit dem AWS CLI oder APIs ausführen.

*Data Manipulation Language* (DML) ist die Gruppe von PartiQL-Anweisungen, die Sie zum Verwalten von Daten in DynamoDB-Tabellen verwenden. Sie verwenden DML-Anweisungen, um Daten in einer Tabelle hinzuzufügen, zu ändern oder zu löschen.

Die folgenden Anweisungen für DML- und Abfragesprachen werden unterstützt:
+ [PartiQL-Select-Anweisungen für DynamoDB](ql-reference.select.md)
+ [Aktualisierungen für PartiQL-Anweisungen für DynamoDB](ql-reference.update.md)
+ [PartiQL-Insert-Anweisungen für DynamoDB](ql-reference.insert.md)
+ [PartiQL-Delete-Anweisungen für DynamoDB](ql-reference.delete.md)

[Ausführen von Transaktionen mit PartiQL für DynamoDB](ql-reference.multiplestatements.transactions.md) und [Ausführen von Batchoperationen mit PartiQL für DynamoDB](ql-reference.multiplestatements.batching.md) werden auch von PartiQL für DynamoDB unterstützt.

# PartiQL-Select-Anweisungen für DynamoDB
<a name="ql-reference.select"></a>

Verwenden Sie die `SELECT`-Anweisung zum Abrufen von Daten aus einer Tabelle in Amazon DynamoDB.

Die Verwendung der `SELECT`-Anweisung kann zu einem vollständigen Tabellenscan führen, wenn in der WHERE-Klausel keine Gleichheitsbedingung oder IN-Bedingung mit einem Partitionsschlüssel angegeben ist. Die Scan-Operation untersucht jedes Element auf die angeforderten Werte und kann den bereitgestellten Durchsatz für eine große Tabelle oder Index in einer einzigen Operation verbrauchen. 

Wenn Sie den vollständigen Tabellenscan in PartiQL vermeiden möchten, können Sie:
+ Erstellen Sie Ihre `SELECT`-Anweisungen so, dass keine vollständigen Tabellenscans durchgeführt werden, indem Sie sicherstellen, dass die Bedingung der [WHERE-Klausel entsprechend](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html#ql-reference.select.parameters) konfiguriert ist.
+ Deaktivieren Sie vollständige Tabellenscans mithilfe der IAM-Richtlinie, die unter [Beispiel: In PartiQL für DynamoDB Select-Anweisungen erlauben und vollständige Tabellenscan-Anweisungen verweigern](ql-iam.md#access-policy-ql-iam-example6) im DynamoDB-Entwicklerhandbuch.

Weitere Informationen finden Sie unter [Bewährte Methoden für das Abfragen und Scannen von Daten](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-query-scan.html) im DynamoDB-Entwicklerhandbuch.

**Topics**
+ [Syntax](#ql-reference.select.syntax)
+ [Parameters](#ql-reference.select.parameters)
+ [Beispiele](#ql-reference.select.examples)

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

```
SELECT expression  [, ...] 
FROM table[.index]
[ WHERE condition ] [ [ORDER BY key [DESC|ASC] , ...]
```

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

***expression***  
(erforderlich) Eine Projektion aus dem `*`-Platzhalter oder eine Projektionsliste aus einem oder mehreren Attributnamen oder Dokumentpfaden aus dem Ergebnissatz. Ein Ausdruck kann aus Aufrufen an [Verwenden von PartiQL-Funktionen mit DynamoDB](ql-functions.md) oder Feldern bestehen, die von [PartiQL-Arithmetik-, Vergleichs- und logische Operatoren für DynamoDB](ql-operators.md) geändert werden.

***table***  
(Erforderlich) Der abzufragende Tabellenname.

***index***  
(Optional) Der Name des abzufragenden Indexes.  
Sie müssen dem Tabellennamen und dem Indexnamen doppelte Anführungszeichen hinzufügen, wenn Sie einen Index abfragen.  

```
SELECT * 
FROM "TableName"."IndexName"
```

***condition***  
(Optional) Die Auswahlkriterien für die Abfrage.  
Um sicherzustellen, dass eine `SELECT`-Anweisung nicht zu einem vollständigen Tabellenscan führt, muss die `WHERE`-Klauselbedingung einen Partitionsschlüssel angeben. Verwenden Sie den Gleichheits- oder IN-Operator.  
Angenommen, Sie haben eine `Orders`-Tabelle mit `OrderID`-Partitionsschlüssel und andere Nicht-Schlüsselattribute, einschließlich eines `Address`, würden die folgenden Anweisungen nicht zu einem vollständigen Tabellenscan führen:  

```
SELECT * 
FROM "Orders" 
WHERE OrderID = 100

SELECT * 
FROM "Orders" 
WHERE OrderID = 100 and Address='some address'

SELECT * 
FROM "Orders" 
WHERE OrderID = 100 or OrderID = 200

SELECT * 
FROM "Orders" 
WHERE OrderID IN [100, 300, 234]
```
Folgende `SELECT`-Anweisungen führen jedoch zu einem vollständigen Tabellenscan:  

```
SELECT * 
FROM "Orders" 
WHERE OrderID > 1

SELECT * 
FROM "Orders" 
WHERE Address='some address'

SELECT * 
FROM "Orders" 
WHERE OrderID = 100 OR Address='some address'
```

***key***  
(Optional) Ein Hash-Schlüssel oder ein Sortierschlüssel, der zum Sortieren von ausgegebenen Ergebnissen verwendet werden soll. Die Standardreihenfolge ist aufsteigend (`ASC`) Geben Sie an.`DESC`, wenn die Ergebnisse in absteigender Reihenfolge neu abgestimmt werden sollen.

**Anmerkung**  
Wenn Sie die `WHERE`-Klausel weglassen, werden alle Elemente in der Tabelle abgerufen.

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

Die folgende Abfrage gibt ein Element, falls vorhanden, aus der `Orders`-Tabelle zurück, indem der Partitionsschlüssel `OrderID` angegeben und der Gleichheitsoperator verwendet wird.

```
SELECT OrderID, Total
FROM "Orders"
WHERE OrderID = 1
```

Die folgende Abfrage gibt alle Elemente in der `Orders`-Tabelle mit einem bestimmten Partitionsschlüssel `OrderID` zurück, mithilde von Werten mit dem Operator OR.

```
SELECT OrderID, Total
FROM "Orders"
WHERE OrderID = 1 OR OrderID = 2
```

Die folgende Abfrage gibt alle Elemente in der `Orders`-Tabelle mit einem bestimmten Partitionsschlüssel `OrderID` zurück, mithilde von Werten mit dem Operator IN. Die zurückgegebenen Ergebnisse sind in absteigender Reihenfolge, basierend auf dem `OrderID`-Attributwert.

```
SELECT OrderID, Total
FROM "Orders"
WHERE OrderID IN [1, 2, 3] ORDER BY OrderID DESC
```

Die folgende Abfrage zeigt einen vollständigen Tabellenscan, der alle Elemente aus der `Orders`-Tabelle zurückgibt, deren `Total` größer als 500 ist, wobei `Total` ein Nicht-Schlüsselattribut ist.

```
SELECT OrderID, Total 
FROM "Orders"
WHERE Total > 500
```

Die folgende Abfrage zeigt einen vollständigen Tabellenscan, der alle Elemente aus der `Orders`-Tabelle innerhalb eines bestimmten `Total`-Reihenfolgebereichs zurückgibt, wobei der IN-Operator und ein Nicht-Schlüsselattribut `Total` verwendet werden.

```
SELECT OrderID, Total 
FROM "Orders"
WHERE Total IN [500, 600]
```

Die folgende Abfrage zeigt einen vollständigen Tabellenscan, der alle Elemente aus der `Orders`-Tabelle innerhalb eines bestimmten `Total`-Reihenfolgebereichs zurückgibt, wobei der BETWEEN-Operator und ein Nicht-Schlüsselattribut `Total` verwendet werden.

```
SELECT OrderID, Total 
FROM "Orders" 
WHERE Total BETWEEN 500 AND 600
```

Die folgende Abfrage gibt das erste Datum zurück, an dem ein Firestick-Gerät zum Überwachen verwendet wurde, indem der `CustomerID`-Partitionsschlüssel und der `MovieID`-Sortierschlüssel in der Bedingung der WHERE-Klausel angegeben und Dokumentpfade in der SELECT-Klausel verwendet werden.

```
SELECT Devices.FireStick.DateWatched[0] 
FROM WatchList 
WHERE CustomerID= 'C1' AND MovieID= 'M1'
```

Die folgende Abfrage zeigt einen vollständigen Tabellenscan, der die Liste der Elemente zurückgibt, bei denen ein Firestick-Gerät nach dem 24.12.19 zum ersten Mal unter Verwendung von Dokumentpfaden in der WHERE-Klausel Bedingung verwendet wurde.

```
SELECT Devices 
FROM WatchList 
WHERE Devices.FireStick.DateWatched[0] >= '12/24/19'
```

# Aktualisierungen für PartiQL-Anweisungen für DynamoDB
<a name="ql-reference.update"></a>

Verwenden der `UPDATE`-Anweisung, um den Wert eines oder mehrerer Attribute innerhalb eines Elements in einer Amazon-DynamoDB-Tabelle zu ändern. 

**Anmerkung**  
Sie können nur ein Element gleichzeitig aktualisieren. Sie können keine einzelne DynamoDB-PartiQL-Anweisung ausgeben, die mehrere Elemente aktualisiert. Weitere Informationen zum Aktualisieren mehrerer Elemente finden Sie unter [Ausführen von Transaktionen mit PartiQL für DynamoDB](ql-reference.multiplestatements.transactions.md) oder [Ausführen von Batchoperationen mit PartiQL für DynamoDB](ql-reference.multiplestatements.batching.md).

**Topics**
+ [Syntax](#ql-reference.update.syntax)
+ [Parameters](#ql-reference.update.parameters)
+ [Rückgabewert](#ql-reference.update.return)
+ [Beispiele](#ql-reference.update.examples)

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

```
UPDATE  table  
[SET | REMOVE]  path  [=  data] […]
WHERE condition [RETURNING returnvalues]
<returnvalues>  ::= [ALL OLD | MODIFIED OLD | ALL NEW | MODIFIED NEW] *
```

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

***table***  
(erforderlich) Die Benutzertabelle mit den zu ändernden Daten.

***path***  
(Erforderlich) Ein Attributname oder Dokumentpfad, der erstellt oder geändert werden soll.

***data***  
(Erforderlich) Ein Attributwert oder das Ergebnis einer Operation.  
Die unterstützten Operationen, die mit SET verwendet werden sollen:  
+ LIST\$1APPEND: fügt einem Listentyp einen Wert hinzu.
+ SET\$1ADD: fügt einem Zahlen- oder Zeichenfolgensatz einen Wert hinzu.
+ SET\$1DELETE: Entfernt einen Wert aus einem Zahlen- oder Zeichenfolgensatz.

***condition***  
(erforderlich) Die Auswahlkriterien für die Elemente, die geändert werden sollen. Diese Bedingung muss auf einen einzelnen Primärschlüsselwert aufgelöst werden.

***returnvalues***  
(Optional) Verwenden Sie `returnvalues`, wenn Sie die Elementattribute so abrufen möchten, wie sie vor oder nach der Aktualisierung angezeigt werden. Die gültigen Werte sind:   
+ `ALL OLD *` – Gibt alle Attribute des Elements so zurück, wie sie vor dem Aktualisieren dargestellt wurden.
+ `MODIFIED OLD *` – Gibt nur die aktualisierten Attribute so zurück, wie sie vor dem Aktualisieren dargestellt wurden.
+ `ALL NEW *` – Gibt alle Attribute des Elements zurück, wie sie nach dem Aktualisierungsvorgang angezeigt werden.
+ `MODIFIED NEW *` – Gibt nur die aktualisierten Attribute so zurück, wie sie nach dem `UpdateItem` vorkommen.

## Rückgabewert
<a name="ql-reference.update.return"></a>

Diese Anweisung gibt keinen Wert zurück, es sei denn der `returnvalues`-Parameter ist angegeben.

**Anmerkung**  
Wenn die WHERE-Klausel der UPDATE-Anweisung für kein Element in der DynamoDB-Tabelle als wahr ausgewertet wird, wird `ConditionalCheckFailedException` zurückgegeben.

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

Aktualisieren Sie einen Attributwert in einem vorhandenen Element. Wenn das Attribut nicht vorhanden ist, wird es erstellt.

Mit der folgenden Abfrage wird ein Element in der `"Music"`-Tabelle durch Hinzufügen eines Attributs vom Typ „number“ (`AwardsWon`) und ein Attribut vom Typ „map“ (`AwardDetail`) enthalten.

```
UPDATE "Music" 
SET AwardsWon=1 
SET AwardDetail={'Grammys':[2020, 2018]}  
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
```

Sie können `RETURNING ALL OLD *` hinzufügen, um die Attribute so zurückzugeben, wie sie vor der `Update`-Operation erschienen.

```
UPDATE "Music" 
SET AwardsWon=1 
SET AwardDetail={'Grammys':[2020, 2018]}  
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
RETURNING ALL OLD *
```

Damit wird Folgendes zurückgegeben:

```
{
    "Items": [
        {
            "Artist": {
                "S": "Acme Band"
            },
            "SongTitle": {
                "S": "PartiQL Rocks"
            }
        }
    ]
}
```

Sie können `RETURNING ALL NEW *` hinzufügen, um die Attribute so zurückzugeben, wie sie nach der `Update`-Operation erschienen.

```
UPDATE "Music" 
SET AwardsWon=1 
SET AwardDetail={'Grammys':[2020, 2018]}  
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
RETURNING ALL NEW *
```

Damit wird Folgendes zurückgegeben:

```
{
    "Items": [
        {
            "AwardDetail": {
                "M": {
                    "Grammys": {
                        "L": [
                            {
                                "N": "2020"
                            },
                            {
                                "N": "2018"
                            }
                        ]
                    }
                }
            },
            "AwardsWon": {
                "N": "1"
            }
        }
    ]
}
```

Mit der folgenden Abfrage wird ein Element in der `"Music"`-Tabelle durch Anhängen an eine Liste `AwardDetail.Grammys` aktualisiert.

```
UPDATE "Music" 
SET AwardDetail.Grammys =list_append(AwardDetail.Grammys,[2016])  
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
```

Mit der folgenden Abfrage wird ein Element in der `"Music"`-Tabelle durch Entfernen aus einer Liste `AwardDetail.Grammys` aktualisiert.

```
UPDATE "Music" 
REMOVE AwardDetail.Grammys[2]   
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
```

Mit der folgenden Abfrage wird ein Element in der `"Music"`-Tabelle durch Hinzufügen von `BillBoard` zur Karte `AwardDetail` aktualisiert.

```
UPDATE "Music" 
SET AwardDetail.BillBoard=[2020] 
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
```

Die folgende Abfrage aktualisiert ein Element in der `"Music"`-Tabelle durch Hinzufügen des Zeichenfolgensatzattributs `BandMembers`.

```
UPDATE "Music" 
SET BandMembers =<<'member1', 'member2'>> 
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
```

Die folgende Abfrage aktualisiert ein Element in der `"Music"`-Tabelle, indem `newbandmember` zum Zeichenfolgensatz `BandMembers` hinzugefügt wird.

```
UPDATE "Music" 
SET BandMembers =set_add(BandMembers, <<'newbandmember'>>) 
WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
```

# PartiQL-Delete-Anweisungen für DynamoDB
<a name="ql-reference.delete"></a>

Verwenden der`DELETE`-Anweisung verwenden, um ein vorhandenes Element aus Ihrer Amazon-DynamoDB-Tabelle zu löschen.

**Anmerkung**  
Sie können nur jeweils ein Element löschen. Sie können keine einzelne DynamoDB-PartiQL-Anweisung ausgeben, die mehrere Elemente löscht. Informationen zum Löschen mehrerer Elemente finden Sie unter [Ausführen von Transaktionen mit PartiQL für DynamoDB](ql-reference.multiplestatements.transactions.md) oder [Ausführen von Batchoperationen mit PartiQL für DynamoDB](ql-reference.multiplestatements.batching.md).

**Topics**
+ [Syntax](#ql-reference.delete.syntax)
+ [Parameters](#ql-reference.delete.parameters)
+ [Rückgabewert](#ql-reference.delete.return)
+ [Beispiele](#ql-reference.delete.examples)

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

```
DELETE FROM table 
 WHERE condition [RETURNING returnvalues]
 <returnvalues>  ::= ALL OLD *
```

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

***table***  
(Erforderlich) Die DynamoDB-Tabelle, die das zu löschende Element enthält.

***condition***  
(Erforderlich) Die Auswahlkriterien für das zu löschende Element; diese Bedingung muss auf einen einzelnen Primärschlüsselwert aufgelöst werden.

***returnvalues***  
(Optional) Verwenden Sie `returnvalues`, wenn Sie die Elementattribute so erhalten möchten, wie sie vor dem Löschen dargestellt wurden. Die gültigen Werte sind:   
+ `ALL OLD *`- die Inhalte des alten Elements werden zurückgegeben. 

## Rückgabewert
<a name="ql-reference.delete.return"></a>

Diese Anweisung gibt keinen Wert zurück, es sei denn der `returnvalues`-Parameter ist angegeben.

**Anmerkung**  
Wenn in der DynamoDB-Tabelle kein Element mit demselben Primärschlüssel wie dem des Elements vorhanden ist, für das das DELETE ausgegeben wird, wird SUCCESS zurückgegeben, wobei 0 Elemente gelöscht wurden. Wenn die Tabelle ein Element mit demselben Primärschlüssel enthält, aber die Bedingung in der WHERE-Klausel der DELETE-Anweisung als falsch ausgewertet wird, wird `ConditionalCheckFailedException` zurückgegeben.

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

Mit der folgenden Abfrage wird ein Element in der Tabelle `"Music"` gelöscht.

```
DELETE FROM "Music" WHERE "Artist" = 'Acme Band' AND "SongTitle" = 'PartiQL Rocks'
```

Sie können den Parameter `RETURNING ALL OLD *` hinzufügen, um die gelöschten Daten zurückzugeben.

```
DELETE FROM "Music" WHERE "Artist" = 'Acme Band' AND "SongTitle" = 'PartiQL Rocks' RETURNING ALL OLD *
```

Die `Delete`-Anweisung gibt nun Folgendes zurück:

```
{
    "Items": [
        {
            "Artist": {
                "S": "Acme Band"
            },
            "SongTitle": {
                "S": "PartiQL Rocks"
            }
        }
    ]
}
```

# PartiQL-Insert-Anweisungen für DynamoDB
<a name="ql-reference.insert"></a>

Verwenden Sie die `INSERT`-Anweisung, um einer Tabelle in Amazon DynamoDB ein Element hinzuzufügen.

**Anmerkung**  
Sie können nur ein Element gleichzeitig einfügen. Sie können keine einzelne DynamoDB-PartiQL-Anweisung ausgeben, die mehrere Elemente einfügt. Weitere Informationen zum Einfügen mehrerer Elemente finden Sie unter [Ausführen von Transaktionen mit PartiQL für DynamoDB](ql-reference.multiplestatements.transactions.md) oder [Ausführen von Batchoperationen mit PartiQL für DynamoDB](ql-reference.multiplestatements.batching.md).

**Topics**
+ [Syntax](#ql-reference.insert.syntax)
+ [Parameters](#ql-reference.insert.parameters)
+ [Rückgabewert](#ql-reference.insert.return)
+ [Beispiele](#ql-reference.insert.examples)

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

Fügen Sie ein einzelnes Element ein.

```
INSERT INTO table VALUE item
```

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

***table***  
(erforderlich) Die Tabelle, in der Sie die Daten einfügen möchten. Die Tabelle muss bereits vorhanden sein.

***item***  
(Erforderlich) Ein gültiges DynamoDB Element, das als [PartiQL-Tupel](https://partiql.org/docs.html) gezeigt wird. Sie müssen nur *ein* Element angeben, und bei jedem Attributnamen im Element wird die Groß-/Kleinschreibung beachtet und kann in PartiQL mit *einfachen* Anführungszeichen (`'...'`) gekennzeichnet werden.  
Zeichenfolgenwerte werden in PartiQL auch mit *einfachen* Anführungszeichen (`'...'`) angegeben.

## Rückgabewert
<a name="ql-reference.insert.return"></a>

Diese Anweisung gibt keine Werte zurück.

**Anmerkung**  
Wenn die DynamoDB-Tabelle bereits ein Element mit demselben Primärschlüssel wie der Primärschlüssel des einzufügenden Elements enthält, wird `DuplicateItemException` zurückgegeben.

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

```
INSERT INTO "Music" value {'Artist' : 'Acme Band','SongTitle' : 'PartiQL Rocks'}
```