

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.

# Différences dans la lecture d’un élément à l’aide de sa clé primaire
<a name="SQLtoNoSQL.ReadData.SingleItem"></a>

Un modèle d’accès commun aux bases de données consiste à lire un seul élément d’une table. Vous devez spécifier la clé primaire de l’élément que vous voulez.

**Topics**
+ [

## Lecture d’un élément à partir de sa clé primaire avec SQL
](#SQLtoNoSQL.ReadData.SingleItem.SQL)
+ [

## Lecture d’un élément à partir de sa clé primaire dans DynamoDB
](#SQLtoNoSQL.ReadData.SingleItem.DynamoDB)

## Lecture d’un élément à partir de sa clé primaire avec SQL
<a name="SQLtoNoSQL.ReadData.SingleItem.SQL"></a>

En SQL, l’extraction de données d’une table s’effectue à l’aide de l’instruction `SELECT`. Vous pouvez demander une ou plusieurs colonnes du résultat (ou la totalité, si vous utilisez l’opération `*`). La clause `WHERE` détermine les lignes à retourner.

L’instruction `SELECT` suivante permet d’extraire une seule ligne de la table *Music*. La clause `WHERE` spécifie les valeurs de clé primaire.

```
SELECT *
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
```

Vous pouvez modifier cette requête pour récupérer uniquement un sous-ensemble des colonnes.

```
SELECT AlbumTitle, Year, Price
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
```

Notez que la clé primaire de ce tableau est composée de *Artist* et *SongTitle*.

## Lecture d’un élément à partir de sa clé primaire dans DynamoDB
<a name="SQLtoNoSQL.ReadData.SingleItem.DynamoDB"></a>

Dans Amazon DynamoDB, vous pouvez lire un élément à partir d’une table à l’aide de l’API DynamoDB ou de [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html) (langage de requête compatible SQL).

------
#### [ DynamoDB API ]

Avec l’API DynamoDB, vous utilisez l’opération `PutItem` pour ajouter un élément à une table.

DynamoDB propose l’opération `GetItem` pour extraire un élément à partir de sa clé primaire. L’opération `GetItem` est très efficace, car elle donne directement accès à l’emplacement physique de l’élément. (Pour plus d’informations, consultez [Partitions et distribution des données dans DynamoDB](HowItWorks.Partitions.md).)

Par défaut, `GetItem` retourne l’élément entier avec tous ses attributs.

```
{
    TableName: "Music",
    Key: {
        "Artist": "No One You Know",
        "SongTitle": "Call Me Today"
    }
}
```

Vous pouvez ajouter un paramètre `ProjectionExpression` pour renvoyer uniquement certains des attributs.

```
{
    TableName: "Music",
    Key: {
        "Artist": "No One You Know",
        "SongTitle": "Call Me Today"
    },
    "ProjectionExpression": "AlbumTitle, Year, Price"
}
```

Notez que la clé primaire de ce tableau est composée de *Artist* et *SongTitle*.

L’opération `GetItem` de DynamoDB est très efficace. Elle utilise les valeurs de clé primaire pour déterminer l’emplacement exact de stockage de l’élément en question et le récupère directement de cet emplacement. L’instruction SQL `SELECT` est efficace de la même façon, en ce qui concerne la récupération d’éléments par valeurs de clé primaire.

L’instruction SQL `SELECT` prend en charge de nombreux types de requêtes et d’analyses de table. DynamoDB propose une fonctionnalité similaire avec ses opérations `Query` et `Scan`, qui sont décrites dans [Différences dans l’interrogation d’une table](SQLtoNoSQL.ReadData.Query.md) et [Différences dans l’analyse d’une table](SQLtoNoSQL.ReadData.Scan.md).

L’instruction SQL `SELECT` permet d’effectuer des jointures de tables, ce qui vous permet de récupérer les données de plusieurs tables à la fois. Les jointures sont plus efficaces lorsque les tables de base de données sont normalisées et que les relations entre les tables sont claires. Toutefois, si vous joignez un trop grand nombre de tables dans une instruction `SELECT`, les performances de l’application peuvent en être affectées. Vous pouvez contourner ces problèmes en utilisant la réplication de base de données, les vues matérialisées ou les réécritures de requête.

DynamoDB est une base de données non relationnelle ne prenant pas en charge les jointures de tables. Si vous migrez une application existante à partir d’une base de données relationnelle vers DynamoDB, vous devez dénormaliser votre modèle de données pour éliminer la nécessité de jointures.

------
#### [ PartiQL for DynamoDB ]

Avec PartiQL, vous utilisez l’opération `ExecuteStatement` pour lire un élément d’une table, à l’aide de l’instruction PartiQL `Select`.

```
SELECT AlbumTitle, Year, Price
FROM Music
WHERE Artist='No One You Know' AND SongTitle = 'Call Me Today'
```

Notez que la clé primaire de ce tableau est composée de Artist et SongTitle. 

**Note**  
 L’instruction PartiQL select permet également d’interroger ou d’analyser une table DynamoDB

Pour des exemples de code utilisant `Select` et `ExecuteStatement`, consultez [Instructions PartiQL de sélection pour DynamoDB](ql-reference.select.md).

------