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
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.
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.
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.