SynfraCore
Synfracore
Start Learning
Navigation

Academies

Platform

RoadmapsLabsCertificationsInterviewPYQsAI AssistantCareer
Start Learning Free🗺️ Learning Roadmaps

SQL MasteryCheatsheets

Quick reference — commands, syntax, and patterns

✍️
Written by senior engineers. Reviewed for technical accuracy.· Updated 2025 · SynfraCore SQL Mastery Team
Expert Content

SQL — Cheatsheet

sql
-- ── SELECT ───────────────────────────────────────────────
SELECT name, price FROM products;
SELECT DISTINCT category FROM products;
SELECT * FROM products ORDER BY price DESC LIMIT 10;
SELECT name, price, price * 1.18 AS price_with_gst FROM products;

-- ── WHERE ─────────────────────────────────────────────────
WHERE price > 1000 AND category = 'Electronics'
WHERE price BETWEEN 500 AND 5000
WHERE name LIKE '%phone%'         -- Contains
WHERE name LIKE 'Sam%'            -- Starts with
WHERE status IN ('active','pending')
WHERE email IS NOT NULL
WHERE email IS NULL

-- ── AGGREGATE ─────────────────────────────────────────────
SELECT COUNT(*), SUM(total), AVG(total), MIN(total), MAX(total) FROM orders;
SELECT category, COUNT(*) as cnt, SUM(price) as revenue
FROM products GROUP BY category;
SELECT category, COUNT(*) FROM products GROUP BY category HAVING COUNT(*) > 5;

-- ── JOINS ─────────────────────────────────────────────────
-- INNER: only matching rows
SELECT u.name, o.total FROM users u INNER JOIN orders o ON u.id = o.user_id;
-- LEFT: all left rows, NULL for unmatched right
SELECT u.name, o.total FROM users u LEFT JOIN orders o ON u.id = o.user_id;
-- Self join
SELECT a.name AS emp, b.name AS mgr FROM employees a JOIN employees b ON a.manager_id = b.id;

-- ── SUBQUERIES ────────────────────────────────────────────
SELECT * FROM products WHERE price > (SELECT AVG(price) FROM products);
SELECT * FROM users WHERE id IN (SELECT DISTINCT user_id FROM orders WHERE total > 1000);
-- EXISTS
SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);

-- ── CTEs (Common Table Expressions) ──────────────────────
WITH high_value_customers AS (
    SELECT user_id, SUM(total) as lifetime_value
    FROM orders GROUP BY user_id HAVING SUM(total) > 50000
)
SELECT u.name, h.lifetime_value FROM users u JOIN high_value_customers h ON u.id = h.user_id;

-- ── WINDOW FUNCTIONS ──────────────────────────────────────
ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC)
RANK() OVER (ORDER BY score DESC)         -- Gaps in rank (1,2,2,4)
DENSE_RANK() OVER (ORDER BY score DESC)   -- No gaps (1,2,2,3)
SUM(sales) OVER (PARTITION BY region ORDER BY month)  -- Running total
LAG(sales, 1) OVER (ORDER BY month)       -- Previous row
LEAD(sales, 1) OVER (ORDER BY month)      -- Next row
AVG(sales) OVER (ORDER BY month ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)  -- 7-day moving avg

-- ── DDL ───────────────────────────────────────────────────
CREATE TABLE users (
    id   BIGSERIAL PRIMARY KEY,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW()
);
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
DROP TABLE IF EXISTS old_table;
CREATE INDEX idx_users_email ON users(email);

-- ── DML ───────────────────────────────────────────────────
INSERT INTO users (email, name) VALUES ('alice@example.com', 'Alice');
INSERT INTO users (email, name) VALUES ('bob@example.com','Bob'), ('charlie@example.com','Charlie');
UPDATE users SET name = 'Alice Smith' WHERE email = 'alice@example.com';
DELETE FROM users WHERE created_at < NOW() - INTERVAL '1 year';

-- ── UPSERT (PostgreSQL) ───────────────────────────────────
INSERT INTO users (email, name) VALUES ('alice@example.com', 'Alice New')
ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name, updated_at = NOW();

-- ── EXPLAIN / PERFORMANCE ─────────────────────────────────
EXPLAIN SELECT * FROM orders WHERE user_id = 5;
EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 5;
-- Look for: Seq Scan (bad for large tables), Index Scan (good), Rows (estimate accuracy)
Share:
Join our Community
Daily tips, job alerts, interview help — join engineers learning together
Up Next
📝
SQL MasteryNotes
Key takeaways, tips, and important points to remember
Also Worth Exploring
← Back to all SQL Mastery modules
CertificationNotes