Query DynamoDB with real SQL.

Yes — you can use SQL with DynamoDB. The service speaks PartiQL, a SQL-compatible dialect, and DynoStudio extends it with the parts AWS leaves out: joins, subqueries, aggregates and atomic transactions. Every statement is lowered to the native DynamoDB request it runs as, with the cost shown before it executes.

-- Query DynamoDB with plain SQL
SELECT orderId, total, status
FROM "Orders"
WHERE pk = 'Customer#42' AND begins_with(sk, 'ORDER#')

-- Join across items by key, then aggregate
-- (lowered to native DynamoDB requests, cost shown first)
SELECT c.name, COUNT(*) AS orders, SUM(o.total) AS revenue
FROM "Orders" o
JOIN "Customers" c ON c.pk = o.customerId
GROUP BY c.name

What you can do with SQL on DynamoDB

How DynoStudio runs SQL on DynamoDB

1

Native where it can

A partition-key read or write maps straight to Query, GetItem or UpdateItem — the statement you write is the request DynamoDB runs.

2

Lowered where it must

Joins, subqueries and aggregates have no DynamoDB equivalent, so the studio composes them from key-driven reads client-side — and tells you it did.

3

Cost disclosed first

The "Executes as" strip shows the native requests and the rows read before you run — so a Scan or a wide aggregate is never a silent surprise on the bill.

New to the database model? Start with DynamoDB basics — tables, keys and queries, then the SQL dialect overview. Looking up a statement? See the DynamoDB SQL keyword reference.

SQL on DynamoDB — common questions

Can you use SQL with DynamoDB?

Yes. DynamoDB natively speaks PartiQL — a SQL-compatible query language — for reads and writes against a single table. DynoStudio extends that with the parts the service leaves out: key-aware JOINs, IN-subqueries, aggregates with GROUP BY, set operations and atomic transactions. Anything DynamoDB can't run server-side is lowered to the native requests it can, and the exact translation and cost are shown before the statement runs.

How do you query DynamoDB?

You read items with a SELECT … WHERE statement. The trick is the WHERE clause: a partition-key equality (or IN list) stays a cheap Query that touches only matching items, while any other predicate degrades to a Scan that reads — and bills — the whole table. DynoStudio classifies every query as Query or Scan before it runs, points at the predicate responsible, and lets you target a GSI to keep a filter on the cheap side.

Does DynamoDB support joins?

Not natively — DynamoDB has no JOIN and can't run a subquery. DynoStudio adds key-aware joins, semi-/anti-joins via IN / NOT IN (SELECT …), and set operations, composing each from key-driven reads (BatchGetItem) after the first query. Every read in the chain is disclosed and billed honestly, so a join never hides a full-table Scan.

Can you run aggregate queries like COUNT or SUM on DynamoDB?

DynamoDB has no aggregate functions, so DynoStudio folds them client-side: COUNT, SUM, AVG, MIN, MAX and GROUP BY, plus table profiling. Because the fold happens after a read, every item the aggregate touches is read and billed — the studio shows that item count up front, so a COUNT(*) over a table is never a silent surprise on the bill.

Run your first SQL query on DynamoDB.

Free for non-commercial use. Your tables stay in your own AWS account.