In database engineering, SQL queries often evolve into massive, multi-page scripts containing nested subqueries, CTEs, window functions, and multi-table joins.

When SQL is written on a single line or inconsistently capitalized, code reviews become frustrating, and quiet logic bugs (such as unintended Cartesian CROSS JOIN products) slip into production.

This guide outlines modern SQL style conventions, query formatting practices, and online SQL beautification tools.


The Clean SQL Style Guide

1. Capitalize All SQL Reserved Keywords

Bad (Unclear):

select u.id, u.email, o.total_amount from users u join orders o on u.id = o.user_id where o.status = 'completed' order by o.created_at desc limit 10;

Good (Structured):

SELECT
    u.id,
    u.email,
    o.total_amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.status = 'completed'
ORDER BY o.created_at DESC
LIMIT 10;

2. Format Complex JOIN Clauses Explicitly

Always specify the join type (INNER JOIN, LEFT OUTER JOIN, RIGHT JOIN) and place the ON condition on the same line or aligned directly below.

SELECT
    p.product_name,
    c.category_name,
    SUM(oi.quantity) AS total_units_sold
FROM products p
LEFT JOIN categories c 
    ON p.category_id = c.id
INNER JOIN order_items oi 
    ON p.id = oi.product_id
GROUP BY 
    p.product_name,
    c.category_name
HAVING SUM(oi.quantity) > 50;

3. Use Common Table Expressions (CTEs) Over Deep Subqueries

Deeply nested subqueries in FROM (SELECT ... FROM (SELECT ...)) read inside-out and are difficult to reason about.

Refactoring Subqueries to CTEs:

WITH active_users AS (
    SELECT id, email
    FROM users
    WHERE is_active = TRUE
),
recent_orders AS (
    SELECT user_id, SUM(amount) AS lifetime_value
    FROM orders
    WHERE created_at >= '2026-01-01'
    GROUP BY user_id
)
SELECT 
    au.email,
    ro.lifetime_value
FROM active_users au
INNER JOIN recent_orders ro ON au.id = ro.user_id
ORDER BY ro.lifetime_value DESC;

Online SQL Beautification & Formatter Tool

Formatting thousands of lines of legacy database queries manually takes hours.

Use the free ToolzStack SQL Formatter to:

  • Auto-uppercase keywords (SELECT, WHERE, HAVING).
  • Indent nested subqueries and joins cleanly.
  • Export SQL or convert SQL schemas to MongoDB queries with SQL to MongoDB Converter.