

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Perbedaan antara database relasional (SQL) dan DynamoDB saat memodifikasi data dalam tabel
<a name="SQLtoNoSQL.UpdateData"></a>

Bahasa SQL menyediakan pernyataan `UPDATE` untuk memodifikasi data. Amazon DynamoDB menggunakan operasi `UpdateItem` untuk menyelesaikan tugas yang serupa.

**Topics**
+ [Memodifikasi data dalam tabel dengan SQL](#SQLtoNoSQL.UpdateData.SQL)
+ [Memodifikasi data dalam tabel di DynamoDB](#SQLtoNoSQL.UpdateData.DynamoDB)

## Memodifikasi data dalam tabel dengan SQL
<a name="SQLtoNoSQL.UpdateData.SQL"></a>

Dalam SQL, Anda akan menggunakan pernyataan `UPDATE` untuk memodifikasi satu baris atau lebih. Klausa `SET` menentukan nilai-nilai baru untuk satu kolom atau lebih, dan klausul `WHERE` menentukan baris yang dimodifikasi. Berikut adalah contohnya.

```
UPDATE Music
SET RecordLabel = 'Global Records'
WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';
```

Jika tidak ada baris yang cocok dengan klausul `WHERE`, pernyataan `UPDATE` tidak berpengaruh.

## Memodifikasi data dalam tabel di DynamoDB
<a name="SQLtoNoSQL.UpdateData.DynamoDB"></a>

Di DynamoDB, Anda dapat menggunakan DynamoDB API atau [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html) (bahasa kueri yang kompatibel dengan SQL) untuk modifikasi satu item. Jika Anda ingin memodifikasi beberapa item, Anda harus menggunakan beberapa operasi.

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

Dengan DynamoDB API, Anda menggunakan operasi `UpdateItem` untuk memodifikasi satu item.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET RecordLabel = :label",
    ExpressionAttributeValues: {
        ":label": "Global Records"
    }
}
```

Anda harus menentukan atribut `Key` item yang akan dimodifikasi dan `UpdateExpression` untuk menentukan nilai atribut. `UpdateItem` berperilaku seperti operasi “upsert”. Item diperbarui jika ada di tabel, tetapi jika tidak, item baru ditambahkan (disisipkan).

`UpdateItem` mendukung *tulis bersyarat*, di mana operasi hanya berhasil jika `ConditionExpression` tertentu bernilai true. Misalnya, operasi `UpdateItem` berikut tidak melakukan pembaruan kecuali jika harga lagu lebih besar dari atau sama dengan 2,00.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET RecordLabel = :label",
    ConditionExpression: "Price >= :p",
    ExpressionAttributeValues: {
        ":label": "Global Records",
        ":p": 2.00
    }
}
```

`UpdateItem` juga mendukung *penghitung atom*, atau atribut jenis `Number` yang dapat ditambahkan atau dikurangi. Penghitung atom serupa dalam banyak hal dengan generator urutan, kolom identitas, atau bidang penambahan otomatis dalam basis data SQL. 

Berikut ini adalah contoh operasi `UpdateItem` untuk menginisialisasi atribut baru (*Play*) untuk melacak berapa kali lagu telah diputar.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET Plays = :val",
    ExpressionAttributeValues: {
        ":val": 0
    },
    ReturnValues: "UPDATED_NEW"
}
```

Parameter `ReturnValues` diatur ke `UPDATED_NEW`, yang mengembalikan nilai-nilai baru dari setiap atribut yang diperbarui. Dalam hal ini, parameter mengembalikan 0 (nol).

Setiap kali seseorang memutar lagu ini, kita dapat menggunakan operasi `UpdateItem` berikut untuk menambahkan *Play* sebanyak satu.

```
{
    TableName: "Music",
    Key: {
        "Artist":"No One You Know",
        "SongTitle":"Call Me Today"
    },
    UpdateExpression: "SET Plays = Plays + :incr",
    ExpressionAttributeValues: {
        ":incr": 1
    },
    ReturnValues: "UPDATED_NEW"
}
```

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

Dengan PartiQL, Anda menggunakan operasi `ExecuteStatement` untuk memodifikasi item pada tabel, menggunakan pernyataan `Update` PartiQL.

Kunci utama untuk tabel ini terdiri dari *Artis* dan *SongTitle*. Anda harus menentukan nilai untuk atribut ini.

```
UPDATE Music
SET RecordLabel ='Global Records'
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
```

Anda juga dapat memodifikasi beberapa bidang sekaligus, seperti pada contoh berikut.

```
UPDATE Music
SET RecordLabel = 'Global Records'
SET AwardsWon = 10
WHERE Artist ='No One You Know' AND SongTitle='Call Me Today'
```

`Update` juga mendukung *penghitung atom*, atau atribut jenis `Number` yang dapat ditambahkan atau dikurangi. Penghitung atom serupa dalam banyak hal dengan generator urutan, kolom identitas, atau bidang penambahan otomatis dalam basis data SQL.

Berikut ini adalah contoh pernyataan `Update` untuk menginisialisasi atribut baru (*Play*) untuk melacak berapa kali lagu telah diputar.

```
UPDATE Music
SET Plays = 0
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
```

Setiap kali seseorang memutar lagu ini, kita dapat menggunakan pernyataan `Update` berikut untuk menambahkan *Play* sebanyak satu.

```
UPDATE Music
SET Plays = Plays + 1
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
```

**catatan**  
Untuk contoh kode menggunakan `Update` dan `ExecuteStatement`, lihat [Pernyataan pembaruan PartiQL untuk DynamoDB](ql-reference.update.md).

------