PostgreSQL Data Types — Compare and Choose the Right Type
Text
Use text unless you need length validation
3 types
Numeric
Use integer for most things, numeric for money
6 types
Date / Time
Always use timestamptz, never bare timestamp
5 types
JSON
Use jsonb — faster and indexable
2 types
Boolean
Just use boolean
1 type
UUID
Use uuid with gen_random_uuid()
1 type
Binary
Use bytea; consider external storage for large files
1 type
Arrays
Use for small fixed lists; prefer junction tables otherwise
1 type
Special
Prefer GENERATED ALWAYS AS IDENTITY over serial
5 types