Массивы (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);
Преимущества использования массивов
- Упрощение структуры таблиц.
- Гибкость и эффективность хранения связанных данных.
- Возможность работы со списками без дополнительных таблиц.