Basic Queries
SELECT
-- Select all columns
SELECT * FROM users;
-- Select specific columns
SELECT name, email FROM users;
-- With WHERE clause
SELECT * FROM users WHERE age > 25;
-- With ORDER BY
SELECT * FROM users ORDER BY created_at DESC;
-- With LIMIT
SELECT * FROM users LIMIT 10;Filtering
-- Multiple conditions
SELECT * FROM orders
WHERE status = 'completed'
AND total > 100;
-- Pattern matching
SELECT * FROM users
WHERE email LIKE '%@gmail.com';
-- IN operator
SELECT * FROM products
WHERE category IN ('electronics', 'books');Aggregations
-- COUNT
SELECT COUNT(*) FROM users;
-- SUM, AVG, MAX, MIN
SELECT
SUM(total) as revenue,
AVG(total) as avg_order,
MAX(total) as largest_order
FROM orders;
-- GROUP BY
SELECT
category,
COUNT(*) as product_count
FROM products
GROUP BY category;
-- HAVING (filter groups)
SELECT category, COUNT(*) as count
FROM products
GROUP BY category
HAVING count > 5;Joins
-- INNER JOIN
SELECT users.name, orders.total
FROM users
INNER JOIN orders ON users.id = orders.user_id;
-- LEFT JOIN
SELECT users.name, orders.total
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
-- Multiple joins
SELECT u.name, o.total, p.name
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN products p ON o.product_id = p.id;Data Modification
-- INSERT
INSERT INTO users (name, email)
VALUES ('Ben', 'ben@example.com');
-- UPDATE
UPDATE users
SET status = 'active'
WHERE last_login > '2025-01-01';
-- DELETE
DELETE FROM users
WHERE created_at < '2020-01-01';Table Operations
-- CREATE TABLE
CREATE TABLE events (
id SERIAL PRIMARY KEY,
name VARCHAR(255),
timestamp TIMESTAMP DEFAULT NOW()
);
-- ALTER TABLE
ALTER TABLE users
ADD COLUMN phone VARCHAR(20);
-- DROP TABLE
DROP TABLE old_data;Window Functions
-- ROW_NUMBER
SELECT
name,
ROW_NUMBER() OVER (ORDER BY score DESC) as rank
FROM students;
-- Running total
SELECT
date,
revenue,
SUM(revenue) OVER (ORDER BY date) as cumulative
FROM daily_sales;Quick reference for common SQL patterns. Based on PostgreSQL syntax.
BWO