Understanding Array Constructors in PostgreSQL

Arrays are a powerful feature in PostgreSQL that allow you to store multiple values in a single column. They can be particularly useful when dealing with data that naturally forms a group, such as phone numbers, email addresses, or even multi-dimensional data like coordinates.

Declaration of Array Types

In PostgreSQL, you can define a column to be an array of any valid data type, including built-in types, user-defined types, or enumerated types. To declare an array type, you append square brackets [] to the data type name of the array elements. For example, to create a table with an array column, you might use the following SQL statement:

CREATE TABLE sal_emp (
    name text,
    pay_by_quarter integer[],
    schedule text[][]

This statement creates a table named sal_emp with a column of type text (name), a one-dimensional array of type integer (pay_by_quarter), and a two-dimensional array of text (schedule).

Array Value Input

To input values into an array, you can use curly braces {} to enclose the element values and separate them by commas. For instance, to insert values into the sal_emp table, you might use:

INSERT INTO sal_emp (name, pay_by_quarter, schedule)
VALUES ('John Doe', '{10000, 15000, 20000}', '{"Meeting", "Lunch"}');

Here, pay_by_quarter is a one-dimensional array representing the employee’s salary by quarter, and schedule is a two-dimensional array representing the employee’s weekly schedule.

Accessing and Modifying Arrays

You can access array elements using the subscript notation with square brackets []. PostgreSQL arrays are one-based, meaning the first element is accessed with [1]. To modify an array, you can update individual elements or the entire array. For example, to update the second phone number in a contacts table, you might use:

UPDATE contacts
SET phones[2] = '(408)-589-5843'
WHERE id = 3;

This updates the second element of the phones array for the contact with id 3.

Array Functions and Operators

PostgreSQL provides several functions and operators for working with arrays. For example, you can use array_append to add an element to the end of an array, array_prepend to add an element to the beginning, or array_cat to concatenate two arrays:

SELECT array_append(ARRAY[1,2], 3); -- Results in {1,2,3}
SELECT array_prepend(1, ARRAY[2,3]); -- Results in {1,2,3}
SELECT array_cat(ARRAY[1,2], ARRAY[3,4]); -- Results in {1,2,3,4}

These functions allow for dynamic manipulation of array data within your SQL queries.


Understanding how to use array constructors and manipulate array data in PostgreSQL can greatly enhance your ability to work with complex data structures. Whether you’re storing simple lists or multi-dimensional data, arrays provide a flexible and efficient way to handle grouped data within your database.

Thank you for reading.

This post is licensed under CC BY 4.0 by the author.