Queries
SELECT
-- All columnsSELECT * FROM users;
-- Specific columnsSELECT name, email FROM users;
-- With aliasSELECT name AS user_name, email AS contact FROM users;
-- With expressionsSELECT name, price * 1.1 AS price_with_tax FROM products;WHERE
SELECT * FROM users WHERE age > 21;SELECT * FROM users WHERE name = 'Alice' AND status = 'active';SELECT * FROM users WHERE category IN ('tools', 'electronics');SELECT * FROM users WHERE name LIKE 'A%';SELECT * FROM users WHERE email IS NOT NULL;Operators
| Operator | Example |
|---|---|
=, !=, <> | WHERE age = 25 |
<, >, <=, >= | WHERE price > 10.0 |
AND, OR, NOT | WHERE a > 1 AND b < 5 |
IN | WHERE status IN ('active', 'pending') |
LIKE | WHERE name LIKE '%alice%' |
IS NULL, IS NOT NULL | WHERE email IS NOT NULL |
BETWEEN | WHERE age BETWEEN 18 AND 65 |
ORDER BY
SELECT * FROM products ORDER BY price ASC;SELECT * FROM products ORDER BY category, price DESC;LIMIT / OFFSET
SELECT * FROM products ORDER BY price LIMIT 10;SELECT * FROM products ORDER BY price LIMIT 10 OFFSET 20;GROUP BY / HAVING
SELECT category, COUNT(*), AVG(price)FROM productsGROUP BY category;
SELECT category, COUNT(*) as cntFROM productsGROUP BY categoryHAVING cnt > 5;JOINs
-- Inner joinSELECT u.name, o.totalFROM users uJOIN orders o ON u.id = o.user_id;
-- Left joinSELECT u.name, COALESCE(o.total, 0) as totalFROM users uLEFT JOIN orders o ON u.id = o.user_id;
-- Cross joinSELECT a.name, b.nameFROM team_a aCROSS JOIN team_b b;Common Table Expressions (CTEs)
WITH active_users AS ( SELECT id, name FROM users WHERE status = 'active'),user_orders AS ( SELECT user_id, SUM(total) as total_spent FROM orders GROUP BY user_id)SELECT au.name, uo.total_spentFROM active_users auJOIN user_orders uo ON au.id = uo.user_idORDER BY uo.total_spent DESC;Subqueries
-- Scalar subquerySELECT name, (SELECT COUNT(*) FROM orders WHERE orders.user_id = users.id) as order_countFROM users;
-- IN subquerySELECT * FROM productsWHERE category IN (SELECT category FROM featured_categories);
-- EXISTS subquerySELECT * FROM users uWHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);DISTINCT
SELECT DISTINCT category FROM products;SELECT DISTINCT ON (category) name, price FROM products;