O DynamoDB suporta SQL?

Parcialmente. DynamoDB suporta PartiQL, uma linguagem de consulta compatível com SQL para instruções SELECT, INSERT, UPDATE e DELETE. Não é SQL completo: não há JOINs, nem GROUP BY, nem agregações arbitrárias, e consultas eficientes ainda exigem o direcionamento da chave primária ou de um índice. Se você quiser essas peças que faltam, o SQL Workbench do DynoTable executa JOIN, GROUP BY reais e consultas agregadas em suas tabelas DynamoDB a partir do desktop.

O que o PartiQL oferece

Uma sintaxe SQL familiar para as quatro operações de dados. Você pode escrever SELECT * FROM "Orders" WHERE ... em vez de construir chamadas API de baixo nível, o que é conveniente e legível.

O que isso não te dá

  • Sem JOINs — DynamoDB não é relacional; você desnormaliza em vez disso.
  • Sem GROUP BY / agregados — o agrupamento e a soma acontecem em seu aplicativo.
  • Não há varreduras de formato livre baratas — um SELECT sem uma condição chave ainda executa uma varredura e custa de acordo.

Onde o analisador para

Esses não são recursos que você pode alcançar com sintaxe diferente. Execute-os e a instrução nunca chegará ao ponto de ler um item:

SELECT "region", SUM("total") FROM "Orders" GROUP BY "region"
  ValidationException: Unsupported clause: GROUP BY

SELECT COUNT(*) FROM "Orders"
  ValidationException: Unexpected path component at 1:8:5

SELECT SUM("total") FROM "Orders"
  ValidationException: Unexpected path component at 1:8:3

SELECT DISTINCT "region" FROM "Orders"
  ValidationException: Unsupported token in expression: DISTINCT

Veja o que dizem os erros agregados. Não há nenhuma função agregada para o analisador desativar, então COUNT(*) é lido como um caminho de atributo e cai no *, na coluna 8. Isso mostra o quão fina é a superfície do SQL.

ORDER BY é quem deve conhecer, porque parece que funciona:

SELECT * FROM "Orders" WHERE "pk" = 'U#1' ORDER BY "total"
  ValidationException: Variable reference total in ORDER BY clause must be part of the primary key

Você pode classificar pela chave de classificação, crescente ou decrescente, e nada mais. Classificar por qualquer outro atributo é tarefa do seu aplicativo, após a leitura.

O modelo mental

Pense no PartiQL como uma camada de sintaxe sobre as operações existentes de consulta, varredura e gravação do DynamoDB; as mesmas regras de padrão de acesso se aplicam abaixo.

Real SQL (JOIN, GROUP BY, agregados) com DynoTable

PartiQL para em SELECT de tabela única. O SQL Workbench do DynoTable vai além: ele executa JOIN, GROUP BY reais e funções agregadas (COUNT, SUM, AVG, MIN, MAX) em suas tabelas DynamoDB. Ele lê os itens através do DynamoDB API normal e, em seguida, executa a parte relacional da consulta no cliente: SQL dentro das regras de padrão de acesso do DynamoDB, já que cada junção ainda lê uma chave ou índice real. Portanto, as três coisas que o PartiQL não pode fazer, você escreve como uma declaração:

SELECT   c.region, COUNT(*) AS orders, SUM(o.total) AS revenue
FROM     Orders o
JOIN     Customers c ON o.customerId = c.id
GROUP BY c.region

Ele permanece honesto sobre as restrições subjacentes (uma junção ilimitada é uma leitura ilimitada), portanto, as consultas mais rápidas são aquelas cuja junção ou WHERE atinge uma chave ou índice de partição. Detalhes completos em SQL para DynamoDB e no manual do produto em /docs/dynamodb-sql-workbench.

Prototipe o lado PartiQL do mesmo modelo de dados com o Construtor de consultas DynamoDB — emite Programas Query que permanecem no caminho eficiente que PartiQL SELECT usa quando uma chave condição está presente.

Aprofunde-se

Compare os dois em PartiQL vs SQL, consulte Exemplos de PartiQL e leia SQL para DynamoDB. Baixe DynoTable para gravar PartiQL e JOIN, GROUP BY e agregados reais em suas tabelas.

Referências

Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.

Cada ValidationException acima foi reproduzido em 28/07/2026 em relação ao DynamoDB Local 3.3.0 via @aws-sdk/client-dynamodb 3.1095.0 e é citado literalmente, deslocamentos de coluna incluídos.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.