Use when working with databases — migrations, queries, schema design, backups, and troubleshooting. Covers SQLite, PostgreSQL, and container-based database services.
~/<project>/data/*.db# Start PostgreSQL in podman
podman run -d --name postgres \
-e POSTGRES_PASSWORD=dev \
-p 5432:5432 \
-v ~/data/postgres:/var/lib/postgresql/data \
postgres:16
# Connect
podman exec -it postgres psql -U postgres
001_create_users_table.sqlup and down migrationsnpx drizzle-kit generate && npx drizzle-kit migratealembic revision --autogenerate -m "description" && alembic upgrade headmigrate -path ./migrations -database $DB_URL upsqlx migrate runcreated_at and updated_at timestampsNOT NULL with sensible defaults over nullable columns# PostgreSQL
pg_dump -U postgres -d mydb > backup_$(date +%Y%m%d).sql
pg_dump -U postgres -Fc -d mydb > backup_$(date +%Y%m%d).dump # compressed
# SQLite
sqlite3 mydb.db ".backup backup_$(date +%Y%m%d).db"
# Restore PostgreSQL
pg_restore -U postgres -d mydb backup.dump
# Restore SQLite
cp backup.db mydb.db
EXPLAIN ANALYZE to check query plansSELECT * — specify needed columnsLIMIT/OFFSET or cursor-based paginationpodman ps | grep postgrespodman port postgrespsql -h localhost -U postgres -c '\l'SET log_min_duration_statement = 100;EXPLAIN ANALYZE on the slow query\di in psqlANALYZE <table>;SELECT * FROM pg_locks WHERE NOT granted;SELECT pg_terminate_backend(<pid>);