

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