PostgreSQL Cheat Codes
PostgreSQL Cheat Codes for queries, JSONB, window functions, and WAL storage administration. 20 essential cheat codes ready to copy and execute.
Retrieve columns from table.
SELECT col1, col2 FROM tbl; SELECT id, email FROM users; Filter query output rows.
SELECT * FROM tbl WHERE col = val; SELECT * FROM orders WHERE total > 100; Combine rows from two tables on key.
SELECT * FROM t1 JOIN t2 ON t1.id = t2.fk; SELECT u.name, o.id FROM users u JOIN orders o ON u.id = o.user_id; Group rows for aggregate computations.
SELECT col, COUNT(*) FROM tbl GROUP BY col; SELECT dept, COUNT(*) FROM emp GROUP BY dept; Filter aggregated grouped output.
SELECT col, AVG(x) FROM tbl GROUP BY col HAVING AVG(x) > 50; SELECT dept, AVG(sal) FROM emp GROUP BY dept HAVING AVG(sal) > 50000; Add new row records into table.
INSERT INTO tbl (col1) VALUES (val1); INSERT INTO users (email) VALUES ('a@b.com'); Modify existing table column values.
UPDATE tbl SET col = val WHERE condition; UPDATE users SET status = 'active' WHERE id = 1; Remove records matching condition.
DELETE FROM tbl WHERE condition; DELETE FROM sessions WHERE expired = true; Insert row or update on key conflict.
INSERT INTO tbl (id, val) VALUES (1, 'a') ON CONFLICT (id) DO UPDATE SET val = EXCLUDED.val; INSERT INTO stats (id, count) VALUES (1, 1) ON CONFLICT (id) DO UPDATE SET count = stats.count + 1; Return modified column values directly.
INSERT INTO tbl (col) VALUES (val) RETURNING id; INSERT INTO users (email) VALUES ('a@b.com') RETURNING id, created_at; Extract JSON field as text string.
SELECT data->>'field' FROM tbl; SELECT metadata->>'author' FROM docs; Check if JSONB contains key-value pair.
SELECT * FROM tbl WHERE data @> '{"key": "val"}'; SELECT * FROM events WHERE payload @> '{"type": "click"}'; Concatenate group strings with delimiter.
SELECT STRING_AGG(col, ', ') FROM tbl GROUP BY grp; SELECT dept, STRING_AGG(name, ', ') FROM emp GROUP BY dept; Execute query and return real runtime stats.
EXPLAIN ANALYZE SELECT * FROM tbl WHERE col = val; EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'a@b.com'; Build B-Tree index to accelerate lookups.
CREATE INDEX idx_name ON tbl(col); CREATE INDEX idx_users_email ON users(email); Build GIN index for JSONB or array columns.
CREATE INDEX idx_name ON tbl USING GIN (json_col); CREATE INDEX idx_docs_meta ON docs USING GIN (metadata); Query hierarchical org or tree data.
WITH RECURSIVE cte AS (...) SELECT * FROM cte; WITH RECURSIVE tree AS (SELECT id FROM emp UNION ALL SELECT e.id FROM emp e JOIN tree t ON e.mgr_id = t.id) SELECT * FROM tree; Assign row index numbers within partition.
SELECT col, ROW_NUMBER() OVER(PARTITION BY grp ORDER BY val) FROM tbl; SELECT name, ROW_NUMBER() OVER(PARTITION BY dept ORDER BY sal DESC) FROM emp; Reclaim dead tuples and update statistics.
VACUUM ANALYZE tbl_name; VACUUM ANALYZE users; Rapidly wipe all rows from table.
TRUNCATE TABLE tbl RESTART IDENTITY; TRUNCATE TABLE staging_events RESTART IDENTITY; No cheat codes found matching your search term.