

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 entre une base de données relationnelle (SQL) et DynamoDB lors de l’écriture de données dans une table
<a name="SQLtoNoSQL.WriteData"></a>

Les tables des bases de données relationnelles contiennent des *lignes* de données. Les lignes sont composées de *colonnes*. Les tables Amazon DynamoDB contiennent des *éléments*. Les éléments sont composés d’*attributs*.

Cette section décrit comment écrire une ligne (ou un élément) dans une table.

**Topics**
+ [Écriture de données dans une table avec SQL](#SQLtoNoSQL.WriteData.SQL)
+ [Écrire de données dans une table dans DynamoDB](#SQLtoNoSQL.WriteData.DynamoDB)

## Écriture de données dans une table avec SQL
<a name="SQLtoNoSQL.WriteData.SQL"></a>

Une table d’une base de données relationnelle est une structure de données à deux dimensions, composée de lignes et de colonnes. Certains systèmes de gestion de base de données fournissent également la prise en charge des données semi-structurées, généralement avec les types de données natifs JSON ou XML. Cependant, les détails de la mise en œuvre varient selon les fournisseurs.

En SQL, l’ajout d’une ligne à une table s’effectue via l’instruction `INSERT`.

```
INSERT INTO Music
    (Artist, SongTitle, AlbumTitle,
    Year, Price, Genre,
    Tags)
VALUES(
    'No One You Know', 'Call Me Today', 'Somewhat Famous',
    2015, 2.14, 'Country',
    '{"Composers": ["Smith", "Jones", "Davis"],"LengthInSeconds": 214}'
);
```

La clé primaire de cette table comprend *Artist* et *SongTitle*. Vous devez spécifier les valeurs de ces colonnes.

**Note**  
Cet exemple utilise la colonne *Tags* pour stocker les données semi-structurées sur les chansons de la table *Music*. La colonne *Tags* est définie au format TEXTE, ce qui permet de stocker jusqu’à 65 535 caractères dans MySQL. 

## Écrire de données dans une table dans DynamoDB
<a name="SQLtoNoSQL.WriteData.DynamoDB"></a>

Dans Amazon DynamoDB, vous pouvez ajouter un élément à 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.

```
{
    TableName: "Music",
    Item: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today",
        "AlbumTitle":"Somewhat Famous",
        "Year": 2015,
        "Price": 2.14,
        "Genre": "Country",
        "Tags": {
            "Composers": [
                  "Smith",
                  "Jones",
                  "Davis"
            ],
            "LengthInSeconds": 214
        }
    }
}
```

La clé primaire de cette table comprend *Artist* et *SongTitle*. Vous devez spécifier les valeurs de ces attributs.

Voici quelques éléments clés à savoir sur cet exemple `PutItem` :
+ DynamoDB assure une prise en charge native des documents à l’aide de JSON. Cela fait de DynamoDB un outil idéal pour stocker des données semi-structurées telles que des *étiquettes*. Vous pouvez également récupérer et manipuler les données à partir des documents JSON.
+ La table *Music* ne possède aucun attribut prédéfini, à l'exception de la clé primaire (*Artist* et *SongTitle*).
+ La plupart des bases de données SQL sont orientées transactions. Lorsque vous émettez une instruction `INSERT`, les modifications des données ne sont pas permanentes jusqu’à ce que vous lanciez une instruction `COMMIT`. Avec Amazon DynamoDB, les effets d’une opération `PutItem` sont permanents lorsque DynamoDB répond par un code d’état HTTP 200 (`OK`).

Voici quelques autres exemples de `PutItem`.

```
{
    TableName: "Music",
    Item: {
        "Artist": "No One You Know",
        "SongTitle": "My Dog Spot",
        "AlbumTitle":"Hey Now",
        "Price": 1.98,
        "Genre": "Country",
        "CriticRating": 8.4
    }
}
```

```
{
    TableName: "Music",
    Item: {
        "Artist": "No One You Know",
        "SongTitle": "Somewhere Down The Road",
        "AlbumTitle":"Somewhat Famous",
        "Genre": "Country",
        "CriticRating": 8.4,
        "Year": 1984
    }
}
```

```
{
    TableName: "Music",
    Item: {
        "Artist": "The Acme Band",
        "SongTitle": "Still In Love",
        "AlbumTitle":"The Buck Starts Here",
        "Price": 2.47,
        "Genre": "Rock",
        "PromotionInfo": {
            "RadioStationsPlaying":[
                 "KHCR", "KBQX", "WTNR", "WJJH"
            ],
            "TourDates": {
                "Seattle": "20150625",
                "Cleveland": "20150630"
            },
            "Rotation": "Heavy"
        }
    }
}
```

```
{
    TableName: "Music",
    Item: {
        "Artist": "The Acme Band",
        "SongTitle": "Look Out, World",
        "AlbumTitle":"The Buck Starts Here",
        "Price": 0.99,
        "Genre": "Rock"
    }
}
```

**Note**  
En plus de `PutItem`, DynamoDB prend en charge une opération `BatchWriteItem` pour écrire plusieurs éléments à la fois.

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

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

```
INSERT into Music value {  
    'Artist': 'No One You Know',
    'SongTitle': 'Call Me Today',
    'AlbumTitle': 'Somewhat Famous',
    'Year' : '2015',
    'Genre' : 'Acme'
}
```

La clé primaire de cette table comprend *Artist* et *SongTitle*. Vous devez spécifier les valeurs de ces attributs.

**Note**  
Pour des exemples de code utilisant `Insert` et `ExecuteStatement`, consultez [Instructions d’insertion de PartiQL pour DynamoDB](ql-reference.insert.md).

------