

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

# Pernyataan pemilihan PartiQL untuk DynamoDB
<a name="ql-reference.select"></a>

Gunakan pernyataan `SELECT` untuk mengambil data dari tabel di Amazon DynamoDB.

Menggunakan `SELECT` pernyataan dapat menghasilkan pemindaian tabel lengkap jika kondisi kesetaraan atau IN dengan kunci partisi tidak disediakan dalam klausa WHERE. Operasi pemindaian memeriksa setiap item untuk nilai yang diminta dan dapat menggunakan throughput yang disediakan untuk indeks atau tabel besar dalam satu operasi. 

Jika ingin menghindari pemindaian tabel secara lengkap di PartiQL, Anda dapat:
+ Menulis pernyataan `SELECT` Anda agar tidak memindai tabel secara lengkap dengan memastikan [ketentuan klausul WHERE](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html#ql-reference.select.parameters) Anda dikonfigurasi dengan semestinya.
+ Menonaktifkan pemindaian tabel lengkap menggunakan kebijakan IAM yang ditentukan di [Contoh: Mengizinkan pernyataan pilihan dan menolak pernyataan pemindaian tabel lengkap di PartiQL untuk DynamoDB](ql-iam.md#access-policy-ql-iam-example6), dalam panduan developer DynamoDB.

Untuk informasi selengkapnya, lihat [Praktik terbaik untuk Mengkueri dan memindai data](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-query-scan.html), dalam panduan developer DynamoDB.

**Topics**
+ [Sintaks](#ql-reference.select.syntax)
+ [Parameter](#ql-reference.select.parameters)
+ [Contoh](#ql-reference.select.examples)

## Sintaks
<a name="ql-reference.select.syntax"></a>

```
SELECT expression  [, ...] 
FROM table[.index]
[ WHERE condition ] [ [ORDER BY key [DESC|ASC] , ...]
```

## Parameter
<a name="ql-reference.select.parameters"></a>

***expression***  
(Diperlukan) Proyeksi yang terbentuk dari wildcard `*` atau daftar proyeksi dari satu nama atribut atau lebih atau jalur dokumen dari set hasil. Ekspresi dapat terdiri dari panggilan ke [Gunakan fungsi PartiQL dengan DynamoDB](ql-functions.md) atau bidang yang diubah oleh [Aritmatika PartiQL, perbandingan, dan operator logika untuk DynamoDB](ql-operators.md).

***table***  
(Diperlukan) Nama tabel untuk kueri.

***index***  
(Opsional) Nama indeks untuk kueri.  
Anda harus menambahkan tanda kutip ganda ke nama tabel dan nama indeks saat mengkueri indeks.  

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

***condition***  
(Opsional) Kriteria seleksi untuk kueri.  
Untuk memastikan bahwa pernyataan `SELECT` tidak menghasilkan pemindaian tabel secara lengkap, kondisi klausul `WHERE` harus menentukan kunci partisi. Gunakan kesetaraan atau operator IN.  
Misalnya, jika Anda memiliki tabel `Orders` dengan kunci partisi `OrderID` dan atribut non-kunci lainnya, termasuk `Address`, pernyataan berikut tidak akan menghasilkan pemindaian tabel secara lengkap:  

```
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]
```
Namun, pernyataan `SELECT` berikut akan menghasilkan pemindaian tabel secara lengkap:  

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

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

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

***key***  
(Opsional) Kunci hash atau kunci urutan untuk digunakan dalam mengurutkan hasil yang dikembalikan. Urutan defaultnya adalah naik (`ASC`) tentukan `DESC` jika Anda ingin hasil dikembalikan dalam urutan turun.

**catatan**  
Jika Anda menghapus klausul `WHERE`, semua item dalam tabel akan diambil.

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

Kueri berikut mengembalikan satu item, jika ada, dari tabel `Orders` dengan menentukan kunci partisi, `OrderID`, dan menggunakan operator kesetaraan.

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

Kueri berikut mengembalikan semua item dalam tabel `Orders` yang memiliki kunci partisi spesifik, `OrderID`, nilai menggunakan operator OR.

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

Kueri berikut mengembalikan semua item dalam tabel `Orders` yang memiliki kunci partisi spesifik, `OrderID`, nilai menggunakan operator IN. Hasil yang dikembalikan dalam urutan turun, berdasarkan nilai atribut kunci `OrderID`.

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

Kueri berikut menunjukkan pemindaian tabel secara lengkap yang mengembalikan semua item dari tabel `Orders` yang memiliki `Total` lebih dari 500, dengan `Total` adalah atribut non-kunci.

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

Kueri berikut menunjukkan pemindaian tabel secara lengkap yang mengembalikan semua item dari tabel `Orders` di dalam rentang urutan `Total` tertentu, menggunakan operator IN dan atribut non-kunci `Total`.

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

Kueri berikut menunjukkan pemindaian tabel secara lengkap yang mengembalikan semua item dari tabel `Orders` di dalam rentang urutan `Total` tertentu, menggunakan operator BETWEEN dan atribut non-kunci `Total`.

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

Kueri berikut mengembalikan tanggal pertama perangkat firestick digunakan untuk menonton dengan menentukan kunci partisi `CustomerID` dan kunci urutan `MovieID` dalam kondisi klausul WHERE dan menggunakan jalur dokumen dalam klausul SELECT.

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

Kueri berikut menunjukkan pemindaian tabel secara penuh yang mengembalikan daftar item tempat perangkat firestick pertama kali digunakan setelah 24/12/19 menggunakan jalur dokumen dalam kondisi klausul WHERE.

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