70 commands · 5 cheat sheets · SQL

Data Change and Programmability master quick reference

Browse 70 commands from 5 focused cheat sheets on page 1 of 1. Each example opens its matching detailed section.

Data Change and Programmability · 15 commands

PostgreSQL COPY Import and Export Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Import a client file\copy app.stage_order (external_id, ordered_at, amount) FROM './orders.csv' WITH (FORMAT csv, HEADER match)View examples
Import a server fileCOPY app.stage_order (external_id, ordered_at, amount) FROM '/srv/import/orders.csv' WITH (FORMAT csv, HEADER match);View examples
Stream from a clientCOPY app.stage_order (external_id, ordered_at, amount) FROM STDIN WITH (FORMAT csv, HEADER match);View examples
Verify CSV headingsCOPY app.stage_order (external_id, ordered_at, amount) FROM STDIN WITH (FORMAT csv, HEADER match);View examples
Choose a NULL markerCOPY app.stage_order FROM STDIN WITH (FORMAT csv, HEADER match, NULL 'NULL');View examples
Keep empty textCOPY app.contact FROM STDIN WITH (FORMAT csv, HEADER match, FORCE_NOT_NULL (display_name));View examples
Declare source encodingCOPY app.stage_order FROM STDIN WITH (FORMAT csv, HEADER match, ENCODING 'UTF8');View examples
Create transaction stagingCREATE TEMP TABLE stage_order (LIKE app.orders INCLUDING DEFAULTS) ON COMMIT DROP;View examples
Promote valid rowsINSERT INTO app.orders (external_id, ordered_at, amount) SELECT external_id, ordered_at, amount FROM stage_order;View examples
Bound conversion rejectsCOPY app.stage_order FROM STDIN WITH (FORMAT csv, HEADER match, ON_ERROR ignore, REJECT_LIMIT 20);View examples
Report rejected fieldsCOPY app.stage_order FROM STDIN WITH (FORMAT csv, ON_ERROR ignore, REJECT_LIMIT 20, LOG_VERBOSITY verbose);View examples
Export to a client file\copy app.orders (external_id, ordered_at, amount) TO './orders.csv' WITH (FORMAT csv, HEADER true)View examples
Export a stable projection\copy ( SELECT external_id, ordered_at, amount FROM app.orders ORDER BY external_id ) TO './orders.csv' WITH (FORMAT csv, HEADER true)View examples
Monitor COPY progressSELECT pid, command, type, bytes_processed, tuples_processed FROM pg_stat_progress_copy;View examples
Reclaim failed-load spaceVACUUM (ANALYZE) app.stage_order;View examples

Data Change and Programmability · 14 commands

PostgreSQL Functions, Procedures, and Triggers Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Create a SQL functionCREATE FUNCTION app.net_total(numeric, numeric) RETURNS numeric LANGUAGE sql IMMUTABLE RETURN $1 - $2;View examples
Call with named notationSELECT app.calculate_total(subtotal => 100, discount => 5);View examples
Return rowsRETURNS TABLE (order_id bigint, total numeric)View examples
Create PL/pgSQL functionCREATE FUNCTION app.require_positive(value integer) RETURNS integer LANGUAGE plpgsql AS $$ ... $$;View examples
Raise an errorRAISE EXCEPTION 'quantity must be positive' USING ERRCODE = '22023';View examples
Handle an expected errorEXCEPTION WHEN unique_violation THEN ...View examples
Create a procedureCREATE PROCEDURE app.refresh_reports() LANGUAGE plpgsql AS $$ ... $$;View examples
Call a procedureCALL app.refresh_reports();View examples
Declare stable behaviorLANGUAGE sql STABLEView examples
Return null on null inputRETURNS NULL ON NULL INPUTView examples
Run as function ownerSECURITY DEFINER SET search_path = pg_catalog, appView examples
Create trigger functionCREATE FUNCTION app.set_updated_at() RETURNS trigger LANGUAGE plpgsql AS $$ ... $$;View examples
Attach row triggerCREATE TRIGGER set_updated_at BEFORE UPDATE ON app.items FOR EACH ROW EXECUTE FUNCTION app.set_updated_at();View examples
Drop an exact signatureDROP FUNCTION app.net_total(numeric, numeric) RESTRICT;View examples

Data Change and Programmability · 12 commands

PostgreSQL Pattern Matching and Full-Text Search Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Simple patternWHERE title LIKE 'PostgreSQL%'View examples
Case-insensitive patternWHERE title ILIKE '%database%'View examples
Literal wildcardWHERE code LIKE 'A\_%' ESCAPE '\'View examples
POSIX regex matchWHERE value ~ '^[A-Z]{2}-[0-9]+$'View examples
Case-insensitive regexWHERE value ~* '^error:'View examples
Parse a documentto_tsvector('english', coalesce(title, '') || ' ' || coalesce(body, ''))View examples
Plain user queryplainto_tsquery('english', $1)View examples
Web-style querywebsearch_to_tsquery('english', $1)View examples
Match document and querysearch_vector @@ websearch_to_tsquery('english', $1)View examples
Rank a matchts_rank_cd(search_vector, query) AS rankView examples
Highlight fragmentsts_headline('english', body, query)View examples
Index a search vectorCREATE INDEX articles_search_idx ON articles USING GIN (search_vector);View examples

Data Change and Programmability · 12 commands

PostgreSQL Views and Materialized Views Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Create a viewCREATE VIEW active_users AS SELECT id, name FROM users WHERE active;View examples
Replace a compatible viewCREATE OR REPLACE VIEW active_users AS SELECT id, name FROM users WHERE active;View examples
Enforce view predicateCREATE VIEW open_items AS SELECT * FROM items WHERE status = 'open' WITH LOCAL CHECK OPTION;View examples
Create a security barrierCREATE VIEW safe_users WITH (security_barrier = true) AS SELECT id, name FROM users;View examples
Grant view accessGRANT SELECT ON active_users TO reporting_role;View examples
Create stored resultsCREATE MATERIALIZED VIEW sales_summary AS SELECT day, sum(total) FROM sales GROUP BY day;View examples
Create unpopulatedCREATE MATERIALIZED VIEW sales_summary AS SELECT ... WITH NO DATA;View examples
Refresh completelyREFRESH MATERIALIZED VIEW sales_summary;View examples
Refresh while readableREFRESH MATERIALIZED VIEW CONCURRENTLY sales_summary;View examples
Index stored resultsCREATE UNIQUE INDEX sales_summary_day_uidx ON sales_summary (day);View examples
Inspect a view definitionSELECT pg_get_viewdef('active_users'::regclass, true);View examples
Drop without cascadingDROP VIEW active_users RESTRICT;View examples

Data Change and Programmability · 17 commands

SQL Data Modification Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Insert one rowINSERT INTO customers (name, email) VALUES ('Ada', 'ada@example.com');View examples
Insert several rowsINSERT INTO tags (name) VALUES ('sql'), ('database'), ('backend');View examples
Insert query resultsINSERT INTO customer_archive (id, name) SELECT id, name FROM customers WHERE inactive = true;View examples
Use a column defaultINSERT INTO jobs (name, status) VALUES ('reindex', DEFAULT);View examples
Update matching rowsUPDATE customers SET active = false WHERE last_seen_at < DATE '2025-01-01';View examples
Update from the old valueUPDATE products SET price = price * 1.05 WHERE category = 'books';View examples
Update from another tableUPDATE products AS p SET price = i.price FROM imports AS i WHERE i.sku = p.sku;View examples
Delete matching rowsDELETE FROM sessions WHERE expires_at < CURRENT_TIMESTAMP;View examples
Delete using another tableDELETE FROM cart_items AS ci USING products AS p WHERE p.id = ci.product_id AND p.discontinued = true;View examples
Ignore a duplicate insertINSERT INTO tags (name) VALUES ('sql') ON CONFLICT (name) DO NOTHING;View examples
Upsert a rowINSERT INTO counters (key, value) VALUES ('views', 1) ON CONFLICT (key) DO UPDATE SET value = counters.value + EXCLUDED.value;View examples
Return changed valuesINSERT INTO customers (name) VALUES ('Ada') RETURNING id, name;View examples
Begin a transactionBEGIN;View examples
Commit a transactionCOMMIT;View examples
Roll back a transactionROLLBACK;View examples
Create a savepointSAVEPOINT before_optional_step;View examples
Roll back to a savepointROLLBACK TO SAVEPOINT before_optional_step;View examples
CMDMEMO TERMINALREAD ONLY