SQL Cheatsheet — SELECT, JOIN, GROUP BY & More

Essential SQL commands: SELECT, INSERT, UPDATE, DELETE, JOIN, GROUP BY, subqueries, indexes. PostgreSQL & MySQL.

Basic Queries

-- Select all columns
SELECT * FROM users;

-- Select specific columns with filter
SELECT name, email FROM users WHERE active = true;

-- Order and limit
SELECT * FROM products ORDER BY price DESC LIMIT 10;

-- Distinct values
SELECT DISTINCT category FROM products;

-- Count
SELECT COUNT(*) FROM users WHERE role = 'admin';

Filtering

WHERE age > 25
WHERE name LIKE '%smith%'         -- Contains
WHERE name LIKE 'J%'              -- Starts with J
WHERE status IN ('active', 'pending')
WHERE created_at BETWEEN '2026-01-01' AND '2026-12-31'
WHERE email IS NOT NULL
WHERE age > 18 AND role = 'user'
WHERE city = 'Paris' OR city = 'London'

JOINs

-- INNER JOIN — matching rows only
SELECT u.name, o.total
FROM users u
INNER JOIN orders o ON u.id = o.user_id;

-- LEFT JOIN — all from left + matching from right
SELECT u.name, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.name;

-- Multiple joins
SELECT u.name, p.name, o.quantity
FROM orders o
JOIN users u ON o.user_id = u.id
JOIN products p ON o.product_id = p.id;

Aggregation

SELECT category, COUNT(*) AS count, AVG(price) AS avg_price
FROM products
GROUP BY category
HAVING COUNT(*) > 5
ORDER BY avg_price DESC;

Data Modification

-- Insert
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');

-- Update
UPDATE users SET active = false WHERE last_login < '2025-01-01';

-- Delete
DELETE FROM users WHERE id = 42;

-- Upsert (PostgreSQL)
INSERT INTO users (email, name) VALUES ('a@b.com', 'Alice')
ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

Need These Tools as an API?

TextForge API offers 20+ developer toolkit endpoints. Free tier: 50 requests/day.

Try TextForge API Free →

Related Tools