How to use PostgreSQL arrays
· Category: SQL & Databases
Short answer
PostgreSQL supports arrays as a first-class data type with dedicated operators, functions, and index support for efficient multi-value storage.
Steps
- Define an array column:
CREATE TABLE tags (id SERIAL PRIMARY KEY, names TEXT[]); - Insert arrays:
INSERT INTO tags (names) VALUES (ARRAY['sql', 'database']); - Query with operators:
SELECT * FROM tags WHERE names @> ARRAY['sql']; - Access elements:
SELECT names[1] FROM tags; - Update an element:
UPDATE tags SET names[2] = 'postgres' WHERE id = 1;
Tips
- Use GIN indexes on array columns for fast containment queries.
- Arrays are most useful when values are homogeneous and do not require separate table relationships.
Common issues
- Arrays do not enforce foreign key constraints on individual elements.
- Searching for a single element in a large array without an index is slow.r