

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Instructions PartiQL pour DynamoDB
<a name="ql-reference.statements"></a>

Amazon DynamoDB prend en charge les instructions PartiQL suivantes.

**Note**  
DynamoDB ne prend pas en charge toutes les instructions PartiQL.  
Cette référence fournit des exemples de syntaxe de base et d'utilisation des instructions partiQL que vous exécutez manuellement à l'aide de la AWS CLI commande or. APIs

Le *langage de manipulation des données* (Data manipulation language, DML) est l’ensemble d’instructions PartiQL que vous utilisez pour gérer les données dans des tables DynamoDB. Vous utilisez des instructions DML pour ajouter, modifier ou supprimer des données dans une table.

Les instructions DML et de langage de requête prises en charge sont les suivantes :
+ [Instructions PartiQL de sélection pour DynamoDB](ql-reference.select.md)
+ [Instructions de mise à jour de PartiQL pour DynamoDB](ql-reference.update.md)
+ [Instructions d’insertion de PartiQL pour DynamoDB](ql-reference.insert.md)
+ [Instructions de suppression de PartiQL pour DynamoDB](ql-reference.delete.md)

Les instructions [Exécution de transactions avec PartiQL pour DynamoDB](ql-reference.multiplestatements.transactions.md) et [Exécution d’opérations par lot avec PartiQL pour DynamoDB](ql-reference.multiplestatements.batching.md) sont également prises en charge par PartiQL pour DynamoDB.

# Instructions PartiQL de sélection pour DynamoDB
<a name="ql-reference.select"></a>

Utilisez l’instruction `SELECT` pour extraire des données d’une table dans Amazon DynamoDB.

L’utilisation de l’instruction `SELECT` peut entraîner une analyse de table complète si une condition IN avec une clé de partition n’est pas fournie dans la clause WHERE. Une opération d’analyse examine chaque élément en lien avec les valeurs demandées, et peut utiliser tout le débit approvisionné pour une table ou un index volumineux en une seule opération. 

Si vous voulez éviter une analyse de table complète dans PartiQL, vous pouvez :
+ Créer vos instructions `SELECT` de façon à ce qu’elle n’entraînent pas d’analyse de table complète en vous assurant que votre [condition de clause WHERE](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html#ql-reference.select.parameters) est configurée en conséquence.
+ Désactiver l’analyse de table complète à l’aide de la politique IAM spécifiée dans [Exemple : autoriser les instructions de sélection et rejeter les instructions d’analyse de table complète dans PartiQL pour DynamoDB](ql-iam.md#access-policy-ql-iam-example6), dans le Manuel du développeur DynamoDB.

Pour plus d’informations, consultez [Bonnes pratiques pour l’interrogation et l’analyse des données](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-query-scan.html) dans le Guide du développeur DynamoDB.

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

## Syntaxe
<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***  
(Obligatoire) Projection formée à partir du caractère générique `*` ou d’une liste de projection d’un ou de plusieurs noms d’attributs ou chemins d’accès de documents de l’ensemble de résultats. Une expression peut être constituée d’appels à [Utilisation de fonctions PartiQL avec DynamoDB](ql-functions.md) ou de champs modifiés par [Opérateurs arithmétiques, de comparaison et logiques PartiQL pour DynamoDB](ql-operators.md).

***table***  
(Obligatoire) Nom de la table à interroger.

***index***  
(Facultatif) Nom de l’index à interroger.  
Vous devez ajouter des guillemets doubles au nom de la table et au nom de l’index lorsque vous interrogez un index.  

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

***condition***  
(Facultatif) Critères de sélection pour la requête.  
Pour s’assurer qu’une instruction `SELECT` n’entraîne pas une analyse de table complète, la condition de clause `WHERE` doit spécifier une clé de partition. Utilisez l’opérateur d’égalité ou IN (DANS).  
Par exemple, si vous avez une table `Orders` avec une clé de partition `OrderID` et des attributs autres que de clé, dont une `Address`, les instructions suivantes n’entraînent pas d’analyse de table complète :  

```
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]
```
En revanche, les instructions `SELECT` suivantes entraînent une analyse de table complète :  

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

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

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

***key***  
(Facultatif) Clé de hachage ou clé de tri à utiliser pour ordonner les résultats renvoyés. L’ordre par défaut est croissant (`ASC`). Spécifiez `DESC` si vous voulez que les résultats soient réordonnés dans l’ordre décroissant.

**Note**  
Si vous omettez la clause `WHERE`, tous les éléments de la table sont extraits.

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

La requête suivante renvoie un élément existant de la table `Orders` en spécifiant la clé de partition, `OrderID`, et en utilisant l’opérateur d’égalité.

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

La requête suivante renvoie tous les éléments de la table `Orders` ayant une clé de partition spécifique, `OrderID`, et leurs valeurs en utilisant l’opérateur OR (OU).

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

La requête suivante renvoie tous les éléments de la table `Orders` ayant une clé de partition spécifique, `OrderID`, et leurs valeurs en utilisant l’opérateur IN (DANS). Les résultats renvoyés sont dans l’ordre décroissant de la valeur de leur attribut de clé `OrderID`.

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

La requête suivante affiche une analyse de table complète qui renvoie tous les éléments de la table `Orders` dont la valeur `Total` est supérieure à 500, où `Total` est un attribut autre que de clé.

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

La requête suivante affiche une analyse de table complète qui renvoie tous les éléments de la table `Orders`dans une plage `Total` spécifique, en utilisant l’opérateur IN (DANS) et un attribut autre que de clé `Total`.

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

La requête suivante affiche une analyse de table complète qui renvoie tous les éléments de la table `Orders`dans une plage `Total` spécifique, en utilisant l’opérateur BETWEEN (ENTRE) et un attribut autre que de clé `Total`.

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

La requête suivante renvoie la première date à laquelle un Firestick a été utilisé, en spécifiant la clé de partition `CustomerID` et une clé de tri `MovieID` dans la condition de clause WHERE, et en utilisant des chemins d’accès de document dans la clause SELECT.

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

La requête suivante affiche une analyse de table complète qui renvoie la liste des éléments pour lesquels un Firestick a été utilisé pour la première fois après le 24/12/19, en utilisant des chemins de document dans la condition de la clause WHERE.

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

# Instructions de mise à jour de PartiQL pour DynamoDB
<a name="ql-reference.update"></a>

Utilisez l’instruction `UPDATE` pour modifier la valeur d’un ou de plusieurs attributs dans un élément d’une table Amazon DynamoDB. 

**Note**  
Vous ne pouvez mettre à jour qu’un seul élément à la fois et ne pouvez pas émettre une instruction PartiQL pour DynamoDB qui met à jour plusieurs éléments. Pour plus d’informations sur la mise à jour de plusieurs éléments, consultez [Exécution de transactions avec PartiQL pour DynamoDB](ql-reference.multiplestatements.transactions.md) ou [Exécution d’opérations par lot avec PartiQL pour DynamoDB](ql-reference.multiplestatements.batching.md).

**Topics**
+ [Syntaxe](#ql-reference.update.syntax)
+ [Parameters](#ql-reference.update.parameters)
+ [Valeur renvoyée](#ql-reference.update.return)
+ [Exemples](#ql-reference.update.examples)

## Syntaxe
<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***  
(Obligatoire) Table contenant les données à modifier.

***path***  
(Obligatoire) Nom d’attribut ou chemin d’accès de document à créer ou à modifier.

***data***  
(Obligatoire) Valeur d’attribut ou résultat d’une opération.  
Opérations prises en charge à utiliser avec SET :  
+ LIST\$1APPEND : ajoute une valeur à un type de liste.
+ SET\$1ADD : ajoute une valeur à un ensemble de nombres ou de chaînes.
+ SET\$1DELETE : supprime une valeur d’un ensemble de nombres ou de chaînes.

***condition***  
(Obligatoire) Critères de sélection de l’élément à modifier. Le résultat de cette condition doit être une seule valeur de clé primaire.

***returnvalues***  
(Facultatif) Utilisez `returnvalues` si vous souhaitez obtenir les attributs de l’élément avant ou après sa mise à jour. Les valeurs valides sont :   
+ `ALL OLD *` – Renvoie tous les attributs de l’élément avant l’opération de mise à jour.
+ `MODIFIED OLD *` – Renvoie uniquement les attributs mis à jour avant l’opération de mise à jour.
+ `ALL NEW *` – Renvoie tous les attributs de l’élément après l’opération de mise à jour.
+ `MODIFIED NEW *` – Renvoie uniquement les attributs mis à jour après l’opération `UpdateItem`.

## Valeur renvoyée
<a name="ql-reference.update.return"></a>

Cette instruction ne renvoie de valeur que si le paramètre `returnvalues` est spécifié.

**Note**  
Si la clause WHERE de l’instruction UPDATE ne produit le résultat true pour aucun élément de la table DynamoDB, `ConditionalCheckFailedException` est renvoyé.

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

Mettez à jour une valeur d’attribut d’un élément existant. Si l’attribut n’existe pas, il est créé.

La requête suivante met à jour un élément dans la table `"Music"` en ajoutant un attribut de type Number (`AwardsWon`) et un attribut de type Map (`AwardDetail`).

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

Vous pouvez ajouter `RETURNING ALL OLD *` pour renvoyer les attributs tels qu’ils apparaissaient avant l’opération `Update`.

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

Ceci renvoie les informations suivantes :

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

Vous pouvez ajouter `RETURNING ALL NEW *` pour renvoyer les attributs tels qu’ils sont apparus après l’opération `Update`.

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

Ceci renvoie les informations suivantes :

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

La requête suivante met à jour un élément dans la table `"Music"` en effectuant un ajout à une liste `AwardDetail.Grammys`.

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

La requête suivante met à jour un élément dans la table `"Music"` en effectuant une suppression d’une liste `AwardDetail.Grammys`.

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

La requête suivante met à jour un élément dans la table `"Music"` en ajoutant `BillBoard` au mappage `AwardDetail`.

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

La requête suivante met à jour un élément dans la table `"Music"` en ajoutant l’attribut d’ensemble de chaînes `BandMembers`.

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

La requête suivante met à jour un élément dans la table `"Music"` en ajoutant `newbandmember` à l’ensemble de chaînes `BandMembers`.

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

# Instructions de suppression de PartiQL pour DynamoDB
<a name="ql-reference.delete"></a>

Utilisez l’instruction `DELETE` pour supprimer un élément existant de votre table Amazon DynamoDB.

**Note**  
Vous ne pouvez supprimer qu’un seul élément à la fois. Vous ne pouvez pas émettre une seule instruction PartiQL pour DynamoDB qui supprime plusieurs éléments. Pour plus d’informations sur la suppression de plusieurs éléments, consultez [Exécution de transactions avec PartiQL pour DynamoDB](ql-reference.multiplestatements.transactions.md) ou [Exécution d’opérations par lot avec PartiQL pour DynamoDB](ql-reference.multiplestatements.batching.md).

**Topics**
+ [Syntaxe](#ql-reference.delete.syntax)
+ [Parameters](#ql-reference.delete.parameters)
+ [Valeur renvoyée](#ql-reference.delete.return)
+ [Exemples](#ql-reference.delete.examples)

## Syntaxe
<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***  
(Obligatoire) Table DynamoDB contenant l’élément à supprimer.

***condition***  
(Obligatoire) Critères de sélection de l’élément à supprimer. Le résultat de cette condition doit être une seule valeur de clé primaire.

***returnvalues***  
(Facultatif) Utilisez `returnvalues` si vous souhaitez obtenir les attributs de l’élément avant sa suppression. Les valeurs valides sont :   
+ `ALL OLD *` – Le contenu de l’ancien élément est renvoyé.

## Valeur renvoyée
<a name="ql-reference.delete.return"></a>

Cette instruction ne renvoie de valeur que si le paramètre `returnvalues` est spécifié.

**Note**  
Si la table DynamoDB ne contient aucun élément dont la même clé primaire est la même que celle de l’élément pour lequel l’instruction DELETE est émise, le résultat SUCCESS est renvoyé avec 0 élément supprimé. Si la table contient un élément avec la même clé primaire, mais que le résultat de la condition dans la clause WHERE de l’instruction DELETE est false (faux), l’erreur `ConditionalCheckFailedException` est renvoyée.

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

La requête suivante interroge un élément dans la table `"Music"`.

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

Vous pouvez ajouter le paramètre `RETURNING ALL OLD *` pour renvoyer les données supprimées.

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

L’instruction `Delete` renvoie désormais ce qui suit :

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

# Instructions d’insertion de PartiQL pour DynamoDB
<a name="ql-reference.insert"></a>

Utilisez l’instruction `INSERT` pour ajouter un élément à une table dans Amazon DynamoDB.

**Note**  
Vous ne pouvez insérer qu’un seul élément à la fois et ne pouvez pas émettre une instruction PartiQL pour DynamoDB qui insère plusieurs éléments. Pour plus d’informations sur l’insertion de plusieurs éléments, consultez [Exécution de transactions avec PartiQL pour DynamoDB](ql-reference.multiplestatements.transactions.md) ou [Exécution d’opérations par lot avec PartiQL pour DynamoDB](ql-reference.multiplestatements.batching.md).

**Topics**
+ [Syntaxe](#ql-reference.insert.syntax)
+ [Parameters](#ql-reference.insert.parameters)
+ [Valeur renvoyée](#ql-reference.insert.return)
+ [Exemples](#ql-reference.insert.examples)

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

Insérez un seul élément.

```
INSERT INTO table VALUE item
```

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

***table***  
(Obligatoire) Table dans laquelle vous souhaitez insérer les données. La table doit déjà exister.

***item***  
(Obligatoire) Elément DynamoDB valide représenté sous la forme d’un [Tuple PartiqL](https://partiql.org/docs.html). Vous devez spécifier *un seul* élément. Chaque nom d’attribut dans l’élément est sensible à la casse et peut être indiqué par des *apostrophes* (`'...'`) dans PartiQL.  
Les valeurs de chaîne sont également indiquées par des *apostrophes* (`'...'`) dans PartiQL.

## Valeur renvoyée
<a name="ql-reference.insert.return"></a>

Cette instruction ne renvoie aucune valeur.

**Note**  
Si la table DynamoDB contient déjà un élément avec la même clé primaire que la clé primaire de l’élément inséré, l’erreur `DuplicateItemException` est renvoyée.

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

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