Массивы (ARRAY) в PostgreSQL представляют собой коллекции однотипных данных, хранящиеся в виде одного значения. Они позволяют эффективно управлять списками значений и упростить хранение структурированной информации.
Создание таблицы с полем массива
Создание таблицы с полем типа массив осуществляется следующим образом:
CREATE TABLE products (
id SERIAL PRIMARY KEY,
tags TEXT[]
);Вставка данных в массив
Для вставки значений в поле-массив используется следующий синтаксис:
INSERT INTO products (tags) VALUES ('{"electronics", "gadgets", "mobile"}');Альтернативный вариант:
INSERT INTO products (tags) VALUES (ARRAY['electronics', 'gadgets', 'mobile']);Запрос данных из массива
Извлечь элемент массива по индексу:
SELECT tags[1] FROM products;Получение всех элементов массива:
SELECT unnest(tags) FROM products;Поиск в массиве
Поиск записей по наличию элемента в массиве:
SELECT * FROM products
WHERE 'electronics' = ANY(tags);Аналогично используется оператор @> для проверки наличия нескольких значений:
SELECT * FROM products
WHERE tags @> ARRAY['electronics', 'mobile'];Обновление элементов массива
Обновить конкретный элемент массива:
UPDATE products
SET tags[2] = 'accessories'
WHERE id = 1;Добавить элемент к существующему массиву:
UPDATE products
SET tags = array_append(tags, 'new_tag')
WHERE id = 1;Удаление элемента массива
Удалить элемент массива по значению:
UPDATE products
SET tags = array_remove(tags, 'gadgets')
WHERE id = 1;Индексация массива
Создание индекса для ускорения поиска по массиву:
CREATE INDEX idx_products_tags ON products USING GIN(tags);Преимущества использования массивов
- Упрощение структуры таблиц.
- Гибкость и эффективность хранения связанных данных.
- Возможность работы со списками без дополнительных таблиц.