

# Diferenças entre um banco de dados relacional (SQL) e o DynamoDB ao ler dados de uma tabela
<a name="SQLtoNoSQL.ReadData"></a>

Com o SQL, você usa a instrução `SELECT` para recuperar uma ou mais linhas de uma tabela. Use a cláusula `WHERE` para determinar os dados que são retornados para você.

Esse recurso é diferente ao usar o Amazon DynamoDB, que oferece as seguintes operações para leitura de dados:
+ `ExecuteStatement` recupera um ou vários itens de uma tabela. `BatchExecuteStatement` recupera vários itens de tabelas diferentes em uma única operação. Ambas as operações usam [PartiQL](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.html), uma linguagem de consulta compatível com SQL.
+ `GetItem`: recupera um único item de uma tabela. Esta é a maneira mais eficiente de ler um único item, pois ele dá acesso direto à localização física do item. (O DynamoDB também oferece a operação `BatchGetItem`, permitindo que você realize até 100 chamadas `GetItem` em uma única operação.)
+ `Query`: recupera todos os itens que têm uma chave de partição específica. Nesses itens, você pode aplicar uma condição à chave de classificação e recuperar apenas um subconjunto dos dados. `Query` fornece acesso rápido e eficiente às partições em que os dados são armazenados. (Para ter mais informações, consulte [Partições e distribuição de dados no DynamoDB](HowItWorks.Partitions.md).)
+ `Scan`: recupera todos os itens da tabela especificada. (Essa operação não deve ser usada com tabelas grandes, pois ela pode consumir grandes quantidades de recursos do sistema.)

**nota**  
Com um banco de dados relacional, você pode usar a instrução `SELECT` para juntar os dados de várias tabelas e retornar os resultados. Junções são fundamentais para o modelo relacional. Para garantir que as junções sejam executadas de forma eficiente, o banco de dados e suas aplicações devem ter a performance ajustada de forma contínua. O DynamoDB é um banco de dados NoSQL não relacional que não é compatível com junções de tabelas. Em vez disso, os aplicativos leem dados de uma tabela por vez. 

As seções a seguir descrevem diferentes casos de uso para a leitura de dados e como executar essas tarefas com um banco de dados relacional e com o DynamoDB.

**Topics**
+ [Diferenças na leitura de um item usando a respectiva chave primária](SQLtoNoSQL.ReadData.SingleItem.md)
+ [Diferenças na consulta de uma tabela](SQLtoNoSQL.ReadData.Query.md)
+ [Diferenças na varredura de uma tabela](SQLtoNoSQL.ReadData.Scan.md)