SQL Formatting Guide
Well-formatted SQL is easier to read, review, and maintain.
Basic Formatting Rules
-- ✅ Good: Keywords uppercase, proper indentation
SELECT
u.id,
u.name,
u.email,
COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE u.status = 'active'
AND u.created_at > '2024-01-01'
GROUP BY u.id, u.name, u.email
HAVING COUNT(o.id) > 5
ORDER BY order_count DESC
LIMIT 100;
-- ❌ Bad: Hard to read
select u.id,u.name,u.email,count(o.id) from users u left join orders o on o.user_id=u.id where u.status='active' group by u.id,u.name,u.email limit 100;
JOIN Formatting
SELECT
o.id,
o.total,
u.name AS customer_name,
p.name AS product_name
FROM orders o
INNER JOIN users u
ON u.id = o.user_id
LEFT JOIN order_items oi
ON oi.order_id = o.id
LEFT JOIN products p
ON p.id = oi.product_id
WHERE o.status = 'completed';
CTEs (Common Table Expressions)
WITH active_users AS (
SELECT id, name, email
FROM users
WHERE status = 'active'
),
user_orders AS (
SELECT
user_id,
COUNT(*) AS order_count,
SUM(total) AS total_spent
FROM orders
GROUP BY user_id
)
SELECT
au.name,
au.email,
COALESCE(uo.order_count, 0) AS orders,
COALESCE(uo.total_spent, 0) AS spent
FROM active_users au
LEFT JOIN user_orders uo ON uo.user_id = au.id
ORDER BY spent DESC;