What this builder gives you
Pick a table, list the columns you want, stack up a few WHERE filters, and a clean SELECT statement appears next to the form. No typing the boilerplate. The SELECT ... FROM ... WHERE skeleton is handled, so you spend your attention on the parts that actually change between queries.
It covers the shape most everyday queries take. One table, an optional JOIN, filter rows with AND/OR logic, sort the result, cap how many rows come back. That’s the daily 80 percent. Window functions and CTEs aren’t here, and that’s on purpose.
Here’s a query you might land on:
SELECT id, name, email
FROM users
JOIN orders ON users.id = orders.user_id
WHERE active = true
AND country = 'TR'
ORDER BY created_at DESC
LIMIT 50;
Leave the columns box empty and you get SELECT * instead. Small thing, saves a second.
The quoting catches the annoying bug
Forget a quote around a string and your database throws a column-does-not-exist error that sends you hunting for the wrong problem. So this does the quoting for you. Type TR in a value field and it becomes 'TR'. Type 42 and it stays 42. The values true, false, and null pass through unquoted too, because those are SQL keywords, not text.
Got a single quote inside your value, like O'Brien? It gets doubled to O''Brien, which is how SQL escapes them. You don’t have to think about it.
The IN operator behaves a little differently. Comma-separate the values, say TR, US, DE, and each piece gets quoted on its own: country IN ('TR', 'US', 'DE'). And IS NULL / IS NOT NULL drop their value field entirely, since those operators don’t take a right-hand side.
How you’d actually use it
Say you’re writing a report query and you keep second-guessing the WHERE logic. Drop your conditions in one at a time, flip a row between AND and OR, watch the output redraw. Once it reads right, hit Copy and paste it into your client or migration.
It’s also a decent teaching aid. Beginners can see how a checkbox-and-dropdown form maps onto real SQL syntax. Toggle the JOIN on and off and the JOIN ... ON line appears and vanishes, which makes the structure click faster than reading a textbook does.
A few habits worth keeping:
- Name your columns instead of leaning on
*in real code. Explicit column lists survive schema changes better. - The ON condition is free text, so qualify your columns like
users.id = orders.user_idto avoid ambiguity. - LIMIT only accepts digits. Junk in that box gets ignored rather than producing broken SQL.
FAQ
Does it run the query against my database?
Nope. It assembles SQL text in your browser and that’s the whole job. Nothing connects anywhere, nothing executes. Copy the result and run it wherever you like.
Which SQL dialect does it target?
Plain ANSI-style syntax that works in MySQL, PostgreSQL, SQLite, and SQL Server for these basics. The =, LIKE, IN, and IS NULL operators are standard across all of them.
Can I add more than one JOIN?
Just one for now. It’s built around the common single-join case. For anything with several joins or a subquery, grab the output as a starting point and extend it by hand.
Why did my value lose its quotes?
Because it looked like a number, a boolean, or null. If you actually want 42 treated as a string, you’d need to quote it yourself after copying, though that’s rare.
What happens with no WHERE conditions?
The WHERE clause is skipped and you get an unfiltered SELECT. Pair that with a LIMIT so you don’t accidentally pull a whole table.
Is my data sent anywhere?
No. Table names, column names, and filter values stay on your machine. Safe for queries that reference internal schema or business logic.